Fix watch register.

This commit is contained in:
cyprinus 2023-06-04 11:36:57 +08:00
parent e8a67492a6
commit f04ffd899d

View file

@ -478,15 +478,11 @@ func (v *Viper) WatchConfig() {
(event.Has(fsnotify.Write) || event.Has(fsnotify.Create))) || (event.Has(fsnotify.Write) || event.Has(fsnotify.Create))) ||
(currentConfigFile != "" && currentConfigFile != realConfigFile) { (currentConfigFile != "" && currentConfigFile != realConfigFile) {
realConfigFile = currentConfigFile realConfigFile = currentConfigFile
tempViper := New() err := v.ReadInConfig()
tempViper.AddConfigPath(realConfigFile)
err := tempViper.ReadInConfig()
if err != nil { if err != nil {
log.Printf("error reading config file: %v\n", err) log.Printf("error reading config file: %v\n", err)
} }
v.updateRegisteredConfig(tempViper)
if v.onConfigChange != nil { if v.onConfigChange != nil {
v.onConfigChange(event) v.onConfigChange(event)
} }
@ -1623,11 +1619,13 @@ func (v *Viper) ReadInConfig() error {
} }
config := make(map[string]interface{}) config := make(map[string]interface{})
tempViper := New()
err = v.unmarshalReader(bytes.NewReader(file), config) tempViper.configType = v.getConfigType()
err = tempViper.unmarshalReader(bytes.NewReader(file), config)
if err != nil { if err != nil {
return err return err
} }
v.updateRegisteredConfig(tempViper)
v.config = config v.config = config
return nil return nil
@ -1982,7 +1980,10 @@ func (v *Viper) getRemoteConfig(provider RemoteProvider) (map[string]interface{}
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = v.unmarshalReader(reader, v.kvstore) tempViper := New()
tempViper.configType = v.getConfigType()
err = tempViper.unmarshalReader(reader, tempViper.kvstore)
v.updateRegisteredConfig(tempViper)
return v.kvstore, err return v.kvstore, err
} }
@ -1999,6 +2000,7 @@ func (v *Viper) watchKeyValueConfigOnChannel() error {
for { for {
b := <-rc b := <-rc
tempViper := New() tempViper := New()
tempViper.configType = v.getConfigType()
reader := bytes.NewReader(b.Value) reader := bytes.NewReader(b.Value)
tempViper.unmarshalReader(reader, tempViper.kvstore) tempViper.unmarshalReader(reader, tempViper.kvstore)
v.updateRegisteredConfig(tempViper) v.updateRegisteredConfig(tempViper)