Skip to content

Commit 48659d9

Browse files
committed
fix
1 parent a5bde5d commit 48659d9

File tree

1 file changed

+37
-34
lines changed

1 file changed

+37
-34
lines changed

pkg/manager/internal.go

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,42 @@ func (cm *controllerManager) Start(ctx context.Context) (err error) {
351351
// Initialize the internal context.
352352
cm.internalCtx, cm.internalCancel = context.WithCancel(ctx)
353353

354+
var leaderElector *leaderelection.LeaderElector
355+
if cm.resourceLock != nil {
356+
leaderElector, err = leaderelection.NewLeaderElector(leaderelection.LeaderElectionConfig{
357+
Lock: cm.resourceLock,
358+
LeaseDuration: cm.leaseDuration,
359+
RenewDeadline: cm.renewDeadline,
360+
RetryPeriod: cm.retryPeriod,
361+
Callbacks: leaderelection.LeaderCallbacks{
362+
OnStartedLeading: func(_ context.Context) {
363+
if err := cm.startLeaderElectionRunnables(); err != nil {
364+
cm.errChan <- err
365+
return
366+
}
367+
close(cm.elected)
368+
},
369+
OnStoppedLeading: func() {
370+
if cm.onStoppedLeading != nil {
371+
cm.onStoppedLeading()
372+
}
373+
// Make sure graceful shutdown is skipped if we lost the leader lock without
374+
// intending to.
375+
cm.gracefulShutdownTimeout = time.Duration(0)
376+
// Most implementations of leader election log.Fatal() here.
377+
// Since Start is wrapped in log.Fatal when called, we can just return
378+
// an error here which will cause the program to exit.
379+
cm.errChan <- errors.New("leader election lost")
380+
},
381+
},
382+
ReleaseOnCancel: cm.leaderElectionReleaseOnCancel,
383+
Name: cm.leaderElectionID,
384+
})
385+
if err != nil {
386+
return fmt.Errorf("failed during initialization leader election process: %w", err)
387+
}
388+
}
389+
354390
// This chan indicates that stop is complete, in other words all runnables have returned or timeout on stop request
355391
stopComplete := make(chan struct{})
356392
defer close(stopComplete)
@@ -433,40 +469,7 @@ func (cm *controllerManager) Start(ctx context.Context) (err error) {
433469
{
434470
ctx, cancel := context.WithCancel(context.Background())
435471
cm.leaderElectionCancel = cancel
436-
if cm.resourceLock != nil {
437-
leaderElector, err := leaderelection.NewLeaderElector(leaderelection.LeaderElectionConfig{
438-
Lock: cm.resourceLock,
439-
LeaseDuration: cm.leaseDuration,
440-
RenewDeadline: cm.renewDeadline,
441-
RetryPeriod: cm.retryPeriod,
442-
Callbacks: leaderelection.LeaderCallbacks{
443-
OnStartedLeading: func(_ context.Context) {
444-
if err := cm.startLeaderElectionRunnables(); err != nil {
445-
cm.errChan <- err
446-
return
447-
}
448-
close(cm.elected)
449-
},
450-
OnStoppedLeading: func() {
451-
if cm.onStoppedLeading != nil {
452-
cm.onStoppedLeading()
453-
}
454-
// Make sure graceful shutdown is skipped if we lost the leader lock without
455-
// intending to.
456-
cm.gracefulShutdownTimeout = time.Duration(0)
457-
// Most implementations of leader election log.Fatal() here.
458-
// Since Start is wrapped in log.Fatal when called, we can just return
459-
// an error here which will cause the program to exit.
460-
cm.errChan <- errors.New("leader election lost")
461-
},
462-
},
463-
ReleaseOnCancel: cm.leaderElectionReleaseOnCancel,
464-
Name: cm.leaderElectionID,
465-
})
466-
if err != nil {
467-
return fmt.Errorf("failed during initialization leader election process: %w", err)
468-
}
469-
472+
if leaderElector != nil {
470473
// Start the leader elector process
471474
go func() {
472475
leaderElector.Run(ctx)

0 commit comments

Comments
 (0)