diff --git a/weed/util/config.go b/weed/util/config.go index e746b0bd1..2af1ad09e 100644 --- a/weed/util/config.go +++ b/weed/util/config.go @@ -52,6 +52,10 @@ type ViperProxy struct { sync.Mutex } +var ( + vp = &ViperProxy{} +) + func (vp *ViperProxy) SetDefault(key string, value interface{}) { vp.Lock() defer vp.Unlock() @@ -83,10 +87,15 @@ func (vp *ViperProxy) GetStringSlice(key string) []string { } func GetViper() *ViperProxy { - v := &ViperProxy{} - v.Viper = viper.GetViper() - v.AutomaticEnv() - v.SetEnvPrefix("weed") - v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) - return v + vp.Lock() + defer vp.Unlock() + + if vp.Viper == nil { + vp.Viper = viper.GetViper() + vp.AutomaticEnv() + vp.SetEnvPrefix("weed") + vp.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + } + + return vp }