@@ -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