Skip to content

Commit

Permalink
fix: fix dynamic update config doesn't works for some param (#35572) (#…
Browse files Browse the repository at this point in the history
…35637)

issue: #35570
pr: #35572
milvus support config cache to spped up config access, but only evict
param's cache when param has been updated. but milvus's param may rely
on other param's value, let's say ParamsA relys on paramsB, when paramsB
updated, it will evict paramB's cache, but the paramA's cache still keep
the old value.

This PR evict all config cache to solve the above issue, cause dynamic
update config won't be much frequetly.

Signed-off-by: Wei Liu <[email protected]>
  • Loading branch information
weiliu1031 authored Aug 22, 2024
1 parent 946881e commit e014ad9
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
12 changes: 4 additions & 8 deletions pkg/config/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,15 @@ func (m *Manager) CASCachedValue(key string, origin string, value interface{}) b
func (m *Manager) EvictCachedValue(key string) {
m.cacheMutex.Lock()
defer m.cacheMutex.Unlock()
delete(m.configCache, key)
// cause param'value may rely on other params, so we need to evict all the cached value when config is changed
clear(m.configCache)
}

func (m *Manager) EvictCacheValueByFormat(keys ...string) {
m.cacheMutex.Lock()
defer m.cacheMutex.Unlock()

set := typeutil.NewSet(keys...)
for key := range m.configCache {
if set.Contain(formatKey(key)) {
delete(m.configCache, key)
}
}
// cause param'value may rely on other params, so we need to evict all the cached value when config is changed
clear(m.configCache)
}

func (m *Manager) GetConfig(key string) (string, error) {
Expand Down
8 changes: 8 additions & 0 deletions pkg/util/paramtable/component_param_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -630,4 +630,12 @@ func TestCachedParam(t *testing.T) {

assert.Equal(t, 1*time.Hour, params.DataCoordCfg.GCInterval.GetAsDuration(time.Second))
assert.Equal(t, 1*time.Hour, params.DataCoordCfg.GCInterval.GetAsDuration(time.Second))

params.Save(params.QuotaConfig.DiskQuota.Key, "192")
assert.Equal(t, float64(192*1024*1024), params.QuotaConfig.DiskQuota.GetAsFloat())
assert.Equal(t, float64(192*1024*1024), params.QuotaConfig.DiskQuotaPerCollection.GetAsFloat())
params.Save(params.QuotaConfig.DiskQuota.Key, "256")
assert.Equal(t, float64(256*1024*1024), params.QuotaConfig.DiskQuota.GetAsFloat())
assert.Equal(t, float64(256*1024*1024), params.QuotaConfig.DiskQuotaPerCollection.GetAsFloat())
params.Save(params.QuotaConfig.DiskQuota.Key, "192")
}

0 comments on commit e014ad9

Please sign in to comment.