in server/datasource/etcd/kv/kv_cache.go [78:101]
func (kc *Cache) Refresh(ctx context.Context) {
openlog.Info("start to list and watch")
retries := 0
timer := time.NewTimer(backOffMinInterval)
defer timer.Stop()
for {
nextPeriod := backOffMinInterval
if err := kc.listWatch(ctx); err != nil {
retries++
nextPeriod = backoff.GetBackoff().Delay(retries)
} else {
retries = 0
}
select {
case <-ctx.Done():
openlog.Info("stop to list and watch")
return
case <-timer.C:
timer.Reset(nextPeriod)
}
}
}