aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/kubernetes.go
diff options
context:
space:
mode:
authorGravatar Chris O'Haver <cohaver@infoblox.com> 2022-03-04 02:36:02 -0500
committerGravatar GitHub <noreply@github.com> 2022-03-03 23:36:02 -0800
commit967814161aafca87434d61bac02d95794d2549af (patch)
tree05cc59fe62e56bfe837ee2de8290a04bbe249099 /plugin/kubernetes/kubernetes.go
parentd40d22427190ae09e89e4bafb9649c76317b8d11 (diff)
downloadcoredns-967814161aafca87434d61bac02d95794d2549af.tar.gz
coredns-967814161aafca87434d61bac02d95794d2549af.tar.zst
coredns-967814161aafca87434d61bac02d95794d2549af.zip
use tickers instead of time.After to avoid memory leak (#5220)
Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
Diffstat (limited to 'plugin/kubernetes/kubernetes.go')
-rw-r--r--plugin/kubernetes/kubernetes.go20
1 files changed, 13 insertions, 7 deletions
diff --git a/plugin/kubernetes/kubernetes.go b/plugin/kubernetes/kubernetes.go
index cf52ae41b..10bf29938 100644
--- a/plugin/kubernetes/kubernetes.go
+++ b/plugin/kubernetes/kubernetes.go
@@ -275,19 +275,25 @@ func (k *Kubernetes) InitKubeCache(ctx context.Context) (onStart func() error, o
k.APIConn.Run()
}()
- timeout := time.After(5 * time.Second)
- logWaiting := time.After(500 * time.Millisecond)
- ticker := time.NewTicker(100 * time.Millisecond)
- defer ticker.Stop()
+ timeout := 5 * time.Second
+ timeoutTicker := time.NewTicker(timeout)
+ defer timeoutTicker.Stop()
+ logDelay := 500 * time.Millisecond
+ logTicker := time.NewTicker(logDelay)
+ defer logTicker.Stop()
+ checkSyncTicker := time.NewTicker(100 * time.Millisecond)
+ defer checkSyncTicker.Stop()
for {
+ timeoutTicker.Reset(timeout)
+ logTicker.Reset(logDelay)
select {
- case <-ticker.C:
+ case <-checkSyncTicker.C:
if k.APIConn.HasSynced() {
return nil
}
- case <-logWaiting:
+ case <-logTicker.C:
log.Info("waiting for Kubernetes API before starting server")
- case <-timeout:
+ case <-timeoutTicker.C:
log.Warning("starting server with unsynced Kubernetes API")
return nil
}