|
|
|
@ -115,24 +115,26 @@ func (d *dbConfigCachedGetter) GetValue(ctx context.Context, key string) (v stri
|
|
|
|
|
|
|
|
|
|
|
|
func (d *dbConfigCachedGetter) GetRevision(ctx context.Context) int {
|
|
|
|
func (d *dbConfigCachedGetter) GetRevision(ctx context.Context) int {
|
|
|
|
d.mu.RLock()
|
|
|
|
d.mu.RLock()
|
|
|
|
defer d.mu.RUnlock()
|
|
|
|
cachedDuration := time.Since(d.cacheTime)
|
|
|
|
if time.Since(d.cacheTime) < time.Second {
|
|
|
|
cachedRevision := d.revision
|
|
|
|
return d.revision
|
|
|
|
d.mu.RUnlock()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if cachedDuration < time.Second {
|
|
|
|
|
|
|
|
return cachedRevision
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
d.mu.Lock()
|
|
|
|
|
|
|
|
defer d.mu.Unlock()
|
|
|
|
if GetRevision(ctx) != d.revision {
|
|
|
|
if GetRevision(ctx) != d.revision {
|
|
|
|
d.mu.RUnlock()
|
|
|
|
|
|
|
|
d.mu.Lock()
|
|
|
|
|
|
|
|
rev, set, err := GetAllSettings(ctx)
|
|
|
|
rev, set, err := GetAllSettings(ctx)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
log.Error("Unable to get all settings: %v", err)
|
|
|
|
log.Error("Unable to get all settings: %v", err)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
d.cacheTime = time.Now()
|
|
|
|
|
|
|
|
d.revision = rev
|
|
|
|
d.revision = rev
|
|
|
|
d.settings = set
|
|
|
|
d.settings = set
|
|
|
|
}
|
|
|
|
}
|
|
|
|
d.mu.Unlock()
|
|
|
|
|
|
|
|
d.mu.RLock()
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
d.cacheTime = time.Now()
|
|
|
|
return d.revision
|
|
|
|
return d.revision
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|