Skip to content

Commit 329c498

Browse files
committed
Always set Client.MinimumDownloadSpeed
Previously, if `MinimumDownloadSpeed` was not set then we would always clobber the value of `Client.MinimumDownloadSpeed` with the code defaults. This caused `Client.MinimumDownloadSpeed` to be ignored in the config file or environment.
1 parent 25858c1 commit 329c498

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

config/config.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,8 +1702,12 @@ func SetClientDefaults(v *viper.Viper) error {
17021702
v.SetDefault(param.Client_WorkerCount.GetName(), 5)
17031703
v.SetDefault(param.Server_TLSCACertificateFile.GetName(), filepath.Join(configDir, "certificates", "tlsca.pem"))
17041704

1705-
var downloadLimit int64 = 1024 * 100
1706-
v.SetDefault(param.Client_MinimumDownloadSpeed.GetName(), downloadLimit)
1705+
// Default is set outside of defaults.yaml to allow SetDefault call below to override
1706+
viper.SetDefault("Client.MinimumDownloadSpeed", 102400)
1707+
if param.MinimumDownloadSpeed.IsSet() {
1708+
viper.SetDefault(param.Client_MinimumDownloadSpeed.GetName(), param.MinimumDownloadSpeed.GetInt())
1709+
}
1710+
17071711
if v == viper.GetViper() {
17081712
viper.AutomaticEnv()
17091713
upperPrefix := GetPreferredPrefix()
@@ -1763,7 +1767,6 @@ func SetClientDefaults(v *viper.Viper) error {
17631767
}
17641768
}
17651769
// Check the environment variable STASHCP_MINIMUM_DOWNLOAD_SPEED (and all the prefix variants)
1766-
var downloadLimit int64 = 1024 * 100
17671770
var prefixes_with_cp []ConfigPrefix
17681771
for _, prefix := range prefixes {
17691772
prefixes_with_cp = append(prefixes_with_cp, prefix+"CP")
@@ -1773,19 +1776,23 @@ func SetClientDefaults(v *viper.Viper) error {
17731776
if len(downloadLimitStr) == 0 {
17741777
continue
17751778
}
1776-
var err error
1777-
downloadLimit, err = strconv.ParseInt(downloadLimitStr, 10, 64)
1779+
downloadLimit, err := strconv.ParseInt(downloadLimitStr, 10, 64)
17781780
if err != nil {
17791781
log.Errorf("Environment variable %s_MINIMUM_DOWNLOAD_SPEED=%s is not parsable as integer: %s",
17801782
prefixes, downloadLimitStr, err.Error())
1783+
continue
1784+
}
1785+
if downloadLimit < 0 {
1786+
log.Errorf("Environment variable %s_MINIMUM_DOWNLOAD_SPEED=%s is negative value; ignoring and will use"+
1787+
"built-in default of %s", prefixes, downloadLimitStr, viper.Get(param.Client_MinimumDownloadSpeed.GetName()))
1788+
continue
17811789
}
1790+
1791+
// Backward compatibility environment variables do not overwrite the new-style ones
1792+
viper.SetDefault(param.Client_MinimumDownloadSpeed.GetName(), downloadLimit)
1793+
17821794
break
17831795
}
1784-
if param.MinimumDownloadSpeed.IsSet() {
1785-
viper.SetDefault(param.Client_MinimumDownloadSpeed.GetName(), param.MinimumDownloadSpeed.GetInt())
1786-
} else {
1787-
viper.Set(param.Client_MinimumDownloadSpeed.GetName(), downloadLimit)
1788-
}
17891796
// Handle more legacy config options
17901797
if param.DisableProxyFallback.IsSet() {
17911798
viper.SetDefault(param.Client_DisableProxyFallback.GetName(), param.DisableProxyFallback.GetBool())

0 commit comments

Comments
 (0)