Skip to content

Commit f8e2c6c

Browse files
benoit-nexthopgabriel-samfira
authored andcommitted
scaleset: reap timed-out runners stuck in failed status
reapTimedOutRunners only considered runners in pending/installing RunnerStatus as eligible for reaping. A runner whose agent reports a failure (RunnerStatus set to failed via AddInstanceStatusMessage) was never pending/installing again, and would never register as idle/active in github either, so it was permanently excluded from this check and leaked forever (instance never transitioned to pending_delete). Allow RunnerFailed through the same eligibility check. Downstream logic still requires the runner be missing from github or reported offline there before reaping, unchanged.
1 parent ca1b910 commit f8e2c6c

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

workers/scaleset/scaleset.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,8 @@ func (w *Worker) reapTimedOutRunners(runners map[string]params.RunnerReference)
395395
continue
396396
}
397397

398-
if runner.RunnerStatus != params.RunnerPending && runner.RunnerStatus != params.RunnerInstalling {
399-
slog.DebugContext(w.ctx, "runner is not pending or installing; skipping", "runner_name", runner.Name)
398+
if runner.RunnerStatus != params.RunnerPending && runner.RunnerStatus != params.RunnerInstalling && runner.RunnerStatus != params.RunnerFailed {
399+
slog.DebugContext(w.ctx, "runner is not pending, installing or failed; skipping", "runner_name", runner.Name)
400400
continue
401401
}
402402
if ghRunner, ok := runners[runner.Name]; !ok || ghRunner.GetStatus() == params.RunnerOffline {

0 commit comments

Comments
 (0)