Make database open attempts configurable also via config file

This commit is contained in:
Frank Steinborn
2019-08-21 13:16:27 +02:00
committed by Andrey Smirnov
parent 586f879e80
commit 98e75f6d97
9 changed files with 27 additions and 2 deletions
+7 -1
View File
@@ -259,7 +259,13 @@ func (context *AptlyContext) _database() (database.Storage, error) {
} }
} }
tries := context.flags.Lookup("db-open-attempts").Value.Get().(int) var tries int
if context.config().DatabaseOpenAttempts == -1 {
tries = context.flags.Lookup("db-open-attempts").Value.Get().(int)
} else {
tries = context.config().DatabaseOpenAttempts
}
const BaseDelay = 10 * time.Second const BaseDelay = 10 * time.Second
const Jitter = 1 * time.Second const Jitter = 1 * time.Second
+5
View File
@@ -40,6 +40,7 @@ Configuration file is stored in JSON format (default values shown below):
"downloadSpeedLimit": 0, "downloadSpeedLimit": 0,
"downloadRetries": 0, "downloadRetries": 0,
"architectures": [], "architectures": [],
"databaseOpenAttempts": 10,
"dependencyFollowSuggests": false, "dependencyFollowSuggests": false,
"dependencyFollowRecommends": false, "dependencyFollowRecommends": false,
"dependencyFollowAllVariants": false, "dependencyFollowAllVariants": false,
@@ -122,6 +123,10 @@ limit in kbytes/sec on download speed while mirroring remote repositories
number of retries for download attempts number of retries for download attempts
. .
.TP .TP
\fBdatabaseOpenAttempts\fR
number of attempts to open DB if it's locked by other instance; could be overridden with option \fB\-db-open-attempts\fR
.
.TP
\fBarchitectures\fR \fBarchitectures\fR
is a list of architectures to process; if left empty defaults to all available architectures; could be overridden with option \fB\-architectures\fR is a list of architectures to process; if left empty defaults to all available architectures; could be overridden with option \fB\-architectures\fR
. .
+5
View File
@@ -31,6 +31,7 @@ Configuration file is stored in JSON format (default values shown below):
"downloadConcurrency": 4, "downloadConcurrency": 4,
"downloadSpeedLimit": 0, "downloadSpeedLimit": 0,
"downloadRetries": 0, "downloadRetries": 0,
"databaseOpenAttempts": 10,
"architectures": [], "architectures": [],
"dependencyFollowSuggests": false, "dependencyFollowSuggests": false,
"dependencyFollowRecommends": false, "dependencyFollowRecommends": false,
@@ -105,6 +106,10 @@ Options:
* `downloadRetries`: * `downloadRetries`:
number of retries for download attempts number of retries for download attempts
* `databaseOpenAttempts`:
number of attempts to open DB if it's locked by other instance; could be overridden with option
`-db-open-attempts`
* `architectures`: * `architectures`:
is a list of architectures to process; if left empty defaults to all available architectures; could be is a list of architectures to process; if left empty defaults to all available architectures; could be
overridden with option `-architectures` overridden with option `-architectures`
+1
View File
@@ -99,6 +99,7 @@ class BaseTest(object):
"downloadConcurrency": 4, "downloadConcurrency": 4,
"downloadSpeedLimit": 0, "downloadSpeedLimit": 0,
"downloadRetries": 5, "downloadRetries": 5,
"databaseOpenAttempts": 10,
"architectures": [], "architectures": [],
"dependencyFollowSuggests": False, "dependencyFollowSuggests": False,
"dependencyFollowRecommends": False, "dependencyFollowRecommends": False,
+1
View File
@@ -3,6 +3,7 @@
"downloadConcurrency": 4, "downloadConcurrency": 4,
"downloadSpeedLimit": 0, "downloadSpeedLimit": 0,
"downloadRetries": 5, "downloadRetries": 5,
"databaseOpenAttempts": 10,
"architectures": [], "architectures": [],
"dependencyFollowSuggests": false, "dependencyFollowSuggests": false,
"dependencyFollowRecommends": false, "dependencyFollowRecommends": false,
+1
View File
@@ -3,6 +3,7 @@
"downloadConcurrency": 4, "downloadConcurrency": 4,
"downloadSpeedLimit": 0, "downloadSpeedLimit": 0,
"downloadRetries": 0, "downloadRetries": 0,
"databaseOpenAttempts": -1,
"architectures": [], "architectures": [],
"dependencyFollowSuggests": false, "dependencyFollowSuggests": false,
"dependencyFollowRecommends": false, "dependencyFollowRecommends": false,
+1
View File
@@ -1,6 +1,7 @@
{ {
"rootDir": "/tmp/aptly", "rootDir": "/tmp/aptly",
"downloadConcurrency": 4, "downloadConcurrency": 4,
"databaseOpenAttempts": 10,
"architectures": [], "architectures": [],
"dependencyFollowSuggests": false, "dependencyFollowSuggests": false,
"dependencyFollowRecommends": false, "dependencyFollowRecommends": false,
+2
View File
@@ -12,6 +12,7 @@ type ConfigStructure struct { // nolint: maligned
DownloadConcurrency int `json:"downloadConcurrency"` DownloadConcurrency int `json:"downloadConcurrency"`
DownloadLimit int64 `json:"downloadSpeedLimit"` DownloadLimit int64 `json:"downloadSpeedLimit"`
DownloadRetries int `json:"downloadRetries"` DownloadRetries int `json:"downloadRetries"`
DatabaseOpenAttempts int `json:"databaseOpenAttempts"`
Architectures []string `json:"architectures"` Architectures []string `json:"architectures"`
DepFollowSuggests bool `json:"dependencyFollowSuggests"` DepFollowSuggests bool `json:"dependencyFollowSuggests"`
DepFollowRecommends bool `json:"dependencyFollowRecommends"` DepFollowRecommends bool `json:"dependencyFollowRecommends"`
@@ -76,6 +77,7 @@ var Config = ConfigStructure{
RootDir: filepath.Join(os.Getenv("HOME"), ".aptly"), RootDir: filepath.Join(os.Getenv("HOME"), ".aptly"),
DownloadConcurrency: 4, DownloadConcurrency: 4,
DownloadLimit: 0, DownloadLimit: 0,
DatabaseOpenAttempts: -1,
Architectures: []string{}, Architectures: []string{},
DepFollowSuggests: false, DepFollowSuggests: false,
DepFollowRecommends: false, DepFollowRecommends: false,
+4 -1
View File
@@ -23,6 +23,7 @@ func (s *ConfigSuite) TestLoadConfig(c *C) {
c.Assert(err, IsNil) c.Assert(err, IsNil)
c.Check(s.config.RootDir, Equals, "/opt/aptly/") c.Check(s.config.RootDir, Equals, "/opt/aptly/")
c.Check(s.config.DownloadConcurrency, Equals, 33) c.Check(s.config.DownloadConcurrency, Equals, 33)
c.Check(s.config.DatabaseOpenAttempts, Equals, 33)
} }
func (s *ConfigSuite) TestSaveConfig(c *C) { func (s *ConfigSuite) TestSaveConfig(c *C) {
@@ -30,6 +31,7 @@ func (s *ConfigSuite) TestSaveConfig(c *C) {
s.config.RootDir = "/tmp/aptly" s.config.RootDir = "/tmp/aptly"
s.config.DownloadConcurrency = 5 s.config.DownloadConcurrency = 5
s.config.DatabaseOpenAttempts = 5
s.config.GpgProvider = "gpg" s.config.GpgProvider = "gpg"
s.config.FileSystemPublishRoots = map[string]FileSystemPublishRoot{"test": { s.config.FileSystemPublishRoots = map[string]FileSystemPublishRoot{"test": {
@@ -58,6 +60,7 @@ func (s *ConfigSuite) TestSaveConfig(c *C) {
" \"downloadConcurrency\": 5,\n"+ " \"downloadConcurrency\": 5,\n"+
" \"downloadSpeedLimit\": 0,\n"+ " \"downloadSpeedLimit\": 0,\n"+
" \"downloadRetries\": 0,\n"+ " \"downloadRetries\": 0,\n"+
" \"databaseOpenAttempts\": 5,\n"+
" \"architectures\": null,\n"+ " \"architectures\": null,\n"+
" \"dependencyFollowSuggests\": false,\n"+ " \"dependencyFollowSuggests\": false,\n"+
" \"dependencyFollowRecommends\": false,\n"+ " \"dependencyFollowRecommends\": false,\n"+
@@ -115,4 +118,4 @@ func (s *ConfigSuite) TestSaveConfig(c *C) {
"}") "}")
} }
const configFile = `{"rootDir": "/opt/aptly/", "downloadConcurrency": 33}` const configFile = `{"rootDir": "/opt/aptly/", "downloadConcurrency": 33, "databaseOpenAttempts": 33}`