From f9eba8e8c3be1ac446fc7f8e4a4c4b74f4408fc0 Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Sun, 28 Apr 2024 15:06:51 +0800 Subject: [PATCH] fix: Hang when canceling leader election information Hang when canceling leader election information. Occasionally, two leaders may run simultaneously. Kubernetes-commit: b6b46a0e00682517d2ca7b7e9c2706b8e407e52e --- tools/leaderelection/leaderelection.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/leaderelection/leaderelection.go b/tools/leaderelection/leaderelection.go index af840c4a..5a1194b4 100644 --- a/tools/leaderelection/leaderelection.go +++ b/tools/leaderelection/leaderelection.go @@ -304,7 +304,9 @@ func (le *LeaderElector) release() bool { RenewTime: 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) return false }