Skip to content

Commit 49d60ff

Browse files
committed
add function initLeaderElector
1 parent 48659d9 commit 49d60ff

File tree

1 file changed

+38
-29
lines changed

1 file changed

+38
-29
lines changed

pkg/manager/internal.go

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -353,35 +353,7 @@ func (cm *controllerManager) Start(ctx context.Context) (err error) {
353353

354354
var leaderElector *leaderelection.LeaderElector
355355
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-
})
356+
leaderElector, err = cm.initLeaderElector()
385357
if err != nil {
386358
return fmt.Errorf("failed during initialization leader election process: %w", err)
387359
}
@@ -603,6 +575,43 @@ func (cm *controllerManager) engageStopProcedure(stopComplete <-chan struct{}) e
603575
return nil
604576
}
605577

578+
func (cm *controllerManager) initLeaderElector() (*leaderelection.LeaderElector, error) {
579+
leaderElector, err := leaderelection.NewLeaderElector(leaderelection.LeaderElectionConfig{
580+
Lock: cm.resourceLock,
581+
LeaseDuration: cm.leaseDuration,
582+
RenewDeadline: cm.renewDeadline,
583+
RetryPeriod: cm.retryPeriod,
584+
Callbacks: leaderelection.LeaderCallbacks{
585+
OnStartedLeading: func(_ context.Context) {
586+
if err := cm.startLeaderElectionRunnables(); err != nil {
587+
cm.errChan <- err
588+
return
589+
}
590+
close(cm.elected)
591+
},
592+
OnStoppedLeading: func() {
593+
if cm.onStoppedLeading != nil {
594+
cm.onStoppedLeading()
595+
}
596+
// Make sure graceful shutdown is skipped if we lost the leader lock without
597+
// intending to.
598+
cm.gracefulShutdownTimeout = time.Duration(0)
599+
// Most implementations of leader election log.Fatal() here.
600+
// Since Start is wrapped in log.Fatal when called, we can just return
601+
// an error here which will cause the program to exit.
602+
cm.errChan <- errors.New("leader election lost")
603+
},
604+
},
605+
ReleaseOnCancel: cm.leaderElectionReleaseOnCancel,
606+
Name: cm.leaderElectionID,
607+
})
608+
if err != nil {
609+
return nil, err
610+
}
611+
612+
return leaderElector, nil
613+
}
614+
606615
func (cm *controllerManager) startLeaderElectionRunnables() error {
607616
return cm.runnables.LeaderElection.Start(cm.internalCtx)
608617
}

0 commit comments

Comments
 (0)