use tickers instead of time.After to avoid memory leak (#5220)

Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
Chris O'Haver
2022-03-04 02:36:02 -05:00
committed by GitHub
parent d40d224271
commit 967814161a
5 changed files with 31 additions and 13 deletions

View File

@@ -84,12 +84,15 @@ func (h *Route53) Run(ctx context.Context) error {
return err
}
go func() {
timer := time.NewTimer(h.refresh)
defer timer.Stop()
for {
timer.Reset(h.refresh)
select {
case <-ctx.Done():
log.Debugf("Breaking out of Route53 update loop for %v: %v", h.zoneNames, ctx.Err())
return
case <-time.After(h.refresh):
case <-timer.C:
if err := h.updateZones(ctx); err != nil && ctx.Err() == nil /* Don't log error if ctx expired. */ {
log.Errorf("Failed to update zones %v: %v", h.zoneNames, err)
}