From e2c7e3fe6d44c183731bf67eb5eb27f4acfe802c Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 13 Jan 2021 13:20:33 -0800 Subject: [PATCH] better locks --- weed/util/config.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) 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 }