in apimachinery/lease/controller.go [179:198]
func (c *controller) retryUpdateLease(base *coordinationv1.Lease) error {
for i := 0; i < maxUpdateRetries; i++ {
leaseToUpdate, _ := c.newLease(base)
lease, err := c.leaseClient.Update(context.TODO(), leaseToUpdate, metav1.UpdateOptions{})
if err == nil {
c.latestLease = lease
return nil
}
klog.Errorf("failed to update lease, error: %v", err)
// OptimisticLockError requires getting the newer version of lease to proceed.
if apierrors.IsConflict(err) {
base, _ = c.backoffEnsureLease()
continue
}
if i > 0 && c.onRepeatedHeartbeatFailure != nil {
c.onRepeatedHeartbeatFailure()
}
}
return fmt.Errorf("failed %d attempts to update lease", maxUpdateRetries)
}