From 967814161aafca87434d61bac02d95794d2549af Mon Sep 17 00:00:00 2001 From: Chris O'Haver Date: Fri, 4 Mar 2022 02:36:02 -0500 Subject: use tickers instead of time.After to avoid memory leak (#5220) Signed-off-by: Chris O'Haver --- plugin/kubernetes/kubernetes.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'plugin/kubernetes/kubernetes.go') 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 } -- cgit v1.2.3