fix: Hang when canceling leader election information

Hang when canceling leader election information.
Occasionally, two leaders may run simultaneously.

Kubernetes-commit: b6b46a0e00682517d2ca7b7e9c2706b8e407e52e
This commit is contained in:
jiuker 2024-04-28 15:06:51 +08:00 committed by Kubernetes Publisher
parent 8a8d0731de
commit f9eba8e8c3

View File

@ -304,7 +304,9 @@ func (le *LeaderElector) release() bool {
RenewTime: now, RenewTime: now,
AcquireTime: now, AcquireTime: now,
} }
if err := le.config.Lock.Update(context.TODO(), leaderElectionRecord); err != nil { timeoutCtx, timeoutCancel := context.WithTimeout(context.Background(), le.config.RenewDeadline)
defer timeoutCancel()
if err := le.config.Lock.Update(timeoutCtx, leaderElectionRecord); err != nil {
klog.Errorf("Failed to release lock: %v", err) klog.Errorf("Failed to release lock: %v", err)
return false return false
} }