@@ -40,6 +40,8 @@ const (
40
40
defaultRenewDeadline = 10 * time .Second
41
41
defaultRetryPeriod = 5 * time .Second
42
42
43
+ defaultReleaseOnCancel = true
44
+
43
45
DefaultHealthCheckTimeout = 20 * time .Second
44
46
45
47
// HealthCheckerAddress is the address at which the leader election health
@@ -66,6 +68,8 @@ type leaderElection struct {
66
68
// within a timeout period.
67
69
healthCheck * leaderelection.HealthzAdaptor
68
70
71
+ releaseOnCancel bool
72
+
69
73
leaseDuration time.Duration
70
74
renewDeadline time.Duration
71
75
retryPeriod time.Duration
@@ -83,13 +87,14 @@ func NewLeaderElection(clientset kubernetes.Interface, lockName string, runFunc
83
87
// NewLeaderElectionWithLeases returns an implementation of leader election using Leases
84
88
func NewLeaderElectionWithLeases (clientset kubernetes.Interface , lockName string , runFunc func (ctx context.Context )) * leaderElection {
85
89
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 ,
93
98
}
94
99
}
95
100
@@ -113,6 +118,10 @@ func (l *leaderElection) WithRetryPeriod(retryPeriod time.Duration) {
113
118
l .retryPeriod = retryPeriod
114
119
}
115
120
121
+ func (l * leaderElection ) WithReleaseOnCancel (releaseOnCancel bool ) {
122
+ l .releaseOnCancel = releaseOnCancel
123
+ }
124
+
116
125
// WithContext Add context
117
126
func (l * leaderElection ) WithContext (ctx context.Context ) {
118
127
l .ctx = ctx
@@ -174,10 +183,11 @@ func (l *leaderElection) Run() error {
174
183
}
175
184
176
185
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 ,
181
191
Callbacks : leaderelection.LeaderCallbacks {
182
192
OnStartedLeading : func (ctx context.Context ) {
183
193
logger := klog .FromContext (ctx )
0 commit comments