diff --git a/tools/leaderelection/leaderelection.go b/tools/leaderelection/leaderelection.go index 53a21e84..64c49f61 100644 --- a/tools/leaderelection/leaderelection.go +++ b/tools/leaderelection/leaderelection.go @@ -277,16 +277,13 @@ func (le *LeaderElector) renew(ctx context.Context) { ctx, cancel := context.WithCancel(ctx) defer cancel() wait.Until(func() { - timeoutCtx, timeoutCancel := context.WithTimeout(ctx, le.config.RenewDeadline) - defer timeoutCancel() - err := wait.PollImmediateUntil(le.config.RetryPeriod, func() (bool, error) { + err := wait.PollUntilContextTimeout(ctx, le.config.RetryPeriod, le.config.RenewDeadline, true, func(ctx context.Context) (done bool, err error) { if !le.config.Coordinated { - return le.tryAcquireOrRenew(timeoutCtx), nil + return le.tryAcquireOrRenew(ctx), nil } else { - return le.tryCoordinatedRenew(timeoutCtx), nil + return le.tryCoordinatedRenew(ctx), nil } - }, timeoutCtx.Done()) - + }) le.maybeReportTransition() desc := le.config.Lock.Describe() if err == nil {