Skip to content

Commit 8fd97e2

Browse files
committed
fix: exit leader-election when command fails
1 parent 08eadc4 commit 8fd97e2

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

main.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,6 @@ func (el *AwaitElection) createSessionAndElection(ctx context.Context) error {
250250
func (el *AwaitElection) Run() error {
251251
for {
252252
ctx, cancel := context.WithCancel(context.Background())
253-
defer cancel()
254253

255254
// Initialize session and election
256255
err := el.createSessionAndElection(ctx)
@@ -274,14 +273,15 @@ func (el *AwaitElection) Run() error {
274273
err = el.LeaderExec(ctx)
275274
if err != nil {
276275
log.Printf("Leader execution error: %v", err)
276+
cancel()
277+
return err
277278
}
278279
return err
279280
} else {
280281
log.Printf("Current leader is %s, not %s, will continue trying.", currentLeader, el.LeaderIdentity)
281282
}
282283
} else {
283284
log.Printf("Failed to get current leader: %v, will campaign.", err)
284-
// Continue with campaigning
285285
}
286286

287287
err = el.Election.Campaign(ctx, el.LeaderIdentity)
@@ -297,6 +297,8 @@ func (el *AwaitElection) Run() error {
297297
err = el.LeaderExec(ctx)
298298
if err != nil {
299299
log.Printf("Leader execution error: %v", err)
300+
cancel()
301+
return err
300302
}
301303

302304
select {
@@ -306,7 +308,6 @@ func (el *AwaitElection) Run() error {
306308
log.Printf("Session expired or lost, losing leadership")
307309
cancel()
308310
time.Sleep(el.RetryPeriod)
309-
// Starting new election cycle
310311
}
311312
}
312313
}

0 commit comments

Comments
 (0)