@@ -40,6 +40,8 @@ const (
4040 defaultRenewDeadline = 10 * time .Second
4141 defaultRetryPeriod = 5 * time .Second
4242
43+ defaultReleaseOnCancel = true
44+
4345 DefaultHealthCheckTimeout = 20 * time .Second
4446
4547 // HealthCheckerAddress is the address at which the leader election health
@@ -66,6 +68,8 @@ type leaderElection struct {
6668 // within a timeout period.
6769 healthCheck * leaderelection.HealthzAdaptor
6870
71+ releaseOnCancel bool
72+
6973 leaseDuration time.Duration
7074 renewDeadline time.Duration
7175 retryPeriod time.Duration
@@ -83,13 +87,14 @@ func NewLeaderElection(clientset kubernetes.Interface, lockName string, runFunc
8387// NewLeaderElectionWithLeases returns an implementation of leader election using Leases
8488func NewLeaderElectionWithLeases (clientset kubernetes.Interface , lockName string , runFunc func (ctx context.Context )) * leaderElection {
8589 return & leaderElection {
86- runFunc : runFunc ,
87- lockName : lockName ,
88- resourceLock : resourcelock .LeasesResourceLock ,
89- leaseDuration : defaultLeaseDuration ,
90- renewDeadline : defaultRenewDeadline ,
91- retryPeriod : defaultRetryPeriod ,
92- clientset : clientset ,
90+ runFunc : runFunc ,
91+ lockName : lockName ,
92+ resourceLock : resourcelock .LeasesResourceLock ,
93+ leaseDuration : defaultLeaseDuration ,
94+ renewDeadline : defaultRenewDeadline ,
95+ releaseOnCancel : defaultReleaseOnCancel ,
96+ retryPeriod : defaultRetryPeriod ,
97+ clientset : clientset ,
9398 }
9499}
95100
@@ -113,6 +118,10 @@ func (l *leaderElection) WithRetryPeriod(retryPeriod time.Duration) {
113118 l .retryPeriod = retryPeriod
114119}
115120
121+ func (l * leaderElection ) WithReleaseOnCancel (releaseOnCancel bool ) {
122+ l .releaseOnCancel = releaseOnCancel
123+ }
124+
116125// WithContext Add context
117126func (l * leaderElection ) WithContext (ctx context.Context ) {
118127 l .ctx = ctx
@@ -174,10 +183,11 @@ func (l *leaderElection) Run() error {
174183 }
175184
176185 leaderConfig := leaderelection.LeaderElectionConfig {
177- Lock : lock ,
178- LeaseDuration : l .leaseDuration ,
179- RenewDeadline : l .renewDeadline ,
180- RetryPeriod : l .retryPeriod ,
186+ Lock : lock ,
187+ LeaseDuration : l .leaseDuration ,
188+ RenewDeadline : l .renewDeadline ,
189+ RetryPeriod : l .retryPeriod ,
190+ ReleaseOnCancel : l .releaseOnCancel ,
181191 Callbacks : leaderelection.LeaderCallbacks {
182192 OnStartedLeading : func (ctx context.Context ) {
183193 logger := klog .FromContext (ctx )
0 commit comments