Key lookup searches v.override using path prefixes

When we assign to a map that uses urls for keys, we need to lookup values from that map in the same manner. Without doing so, `Get` will return inconsistent results. The agent codebase generally doesn't call `Get` this way, because we've known url keys work weird, but viper uses this type of call within AllSettings() in order to rebuild the config. In some cases, this could corrupt the data in the config.
This commit is contained in:
Dustin Long 2024-05-23 10:12:29 -04:00
parent 89890a76de
commit 7d76daf975
No known key found for this signature in database

View file

@ -1026,8 +1026,8 @@ func (v *Viper) find(lcaseKey string, skipDefault bool) interface{} {
path = strings.Split(lcaseKey, v.keyDelim)
nested = len(path) > 1
// Set() override first
val = v.searchMap(v.override, path)
// Set() writes to override, so check override first
val = v.searchMapWithPathPrefixes(v.override, path)
if val != nil {
return val
}