Skip to content

Commit f77445f

Browse files
authored
Merge pull request #191 from rhrmo/add-release-on-cancel
Add releaseOnCancel to the leader election configuration
2 parents 85bc748 + 78fec08 commit f77445f

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

leaderelection/leader_election.go

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8488
func 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
117126
func (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

Comments
 (0)