diff options
author | 2022-03-04 02:36:02 -0500 | |
---|---|---|
committer | 2022-03-03 23:36:02 -0800 | |
commit | 967814161aafca87434d61bac02d95794d2549af (patch) | |
tree | 05cc59fe62e56bfe837ee2de8290a04bbe249099 /plugin/kubernetes/kubernetes.go | |
parent | d40d22427190ae09e89e4bafb9649c76317b8d11 (diff) | |
download | coredns-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.go | 20 |
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 } |