Skip to content

Commit 8160ecf

Browse files
committed
Don't clear the cached resourcelock when errors occurs on updates
This allows the lock to be release normally - even with a potentially stale lock. This flow should only occur when we're the lease holders.
1 parent 23ce312 commit 8160ecf

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

staging/src/k8s.io/client-go/tools/leaderelection/resourcelock/configmaplock.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,12 @@ func (cml *ConfigMapLock) Update(ctx context.Context, ler LeaderElectionRecord)
9393
cml.cm.Annotations = make(map[string]string)
9494
}
9595
cml.cm.Annotations[LeaderElectionRecordAnnotationKey] = string(recordBytes)
96-
cml.cm, err = cml.Client.ConfigMaps(cml.ConfigMapMeta.Namespace).Update(ctx, cml.cm, metav1.UpdateOptions{})
97-
return err
96+
cm, err := cml.Client.ConfigMaps(cml.ConfigMapMeta.Namespace).Update(ctx, cml.cm, metav1.UpdateOptions{})
97+
if err != nil {
98+
return err
99+
}
100+
cml.cm = cm
101+
return nil
98102
}
99103

100104
// RecordEvent in leader election while adding meta-data

staging/src/k8s.io/client-go/tools/leaderelection/resourcelock/endpointslock.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,12 @@ func (el *EndpointsLock) Update(ctx context.Context, ler LeaderElectionRecord) e
8888
el.e.Annotations = make(map[string]string)
8989
}
9090
el.e.Annotations[LeaderElectionRecordAnnotationKey] = string(recordBytes)
91-
el.e, err = el.Client.Endpoints(el.EndpointsMeta.Namespace).Update(ctx, el.e, metav1.UpdateOptions{})
92-
return err
91+
e, err := el.Client.Endpoints(el.EndpointsMeta.Namespace).Update(ctx, el.e, metav1.UpdateOptions{})
92+
if err != nil {
93+
return err
94+
}
95+
el.e = e
96+
return nil
9397
}
9498

9599
// RecordEvent in leader election while adding meta-data

staging/src/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,14 @@ func (ll *LeaseLock) Update(ctx context.Context, ler LeaderElectionRecord) error
7171
return errors.New("lease not initialized, call get or create first")
7272
}
7373
ll.lease.Spec = LeaderElectionRecordToLeaseSpec(&ler)
74-
var err error
75-
ll.lease, err = ll.Client.Leases(ll.LeaseMeta.Namespace).Update(ctx, ll.lease, metav1.UpdateOptions{})
76-
return err
74+
75+
lease, err := ll.Client.Leases(ll.LeaseMeta.Namespace).Update(ctx, ll.lease, metav1.UpdateOptions{})
76+
if err != nil {
77+
return err
78+
}
79+
80+
ll.lease = lease
81+
return nil
7782
}
7883

7984
// RecordEvent in leader election while adding meta-data

0 commit comments

Comments
 (0)