On v1.0.10, when a container stops before GitHub reports the job complete (idle sleepAfter stop, OOM, lost communication), the JIT registration stays offline until GitHub's 24 h reaper. runnerStopped moves the job to stopped-awaiting-completion but never calls deleteGitHubRunner; only the provisioning-failure and alarm-recovery paths do.
On our fleet this leaves ~30 offline cf-* registrations in steady state (88 registered, 31 offline, all Cloudflare), which makes a starting container indistinguishable from a dead one in the runner list.
Fix that works for us, in runnerStopped before the stopped-awaiting-completion update:
// A stopped container can never run its job, so drop its JIT registration now.
await this.retryRunnerCleanup(job);
A stopped container can never pick the job up again, so the registration is safe to remove immediately; retryRunnerCleanup already handles retries and the not-found case.
On v1.0.10, when a container stops before GitHub reports the job complete (idle
sleepAfterstop, OOM, lost communication), the JIT registration staysofflineuntil GitHub's 24 h reaper.runnerStoppedmoves the job tostopped-awaiting-completionbut never callsdeleteGitHubRunner; only the provisioning-failure and alarm-recovery paths do.On our fleet this leaves ~30 offline
cf-*registrations in steady state (88 registered, 31 offline, all Cloudflare), which makes a starting container indistinguishable from a dead one in the runner list.Fix that works for us, in
runnerStoppedbefore thestopped-awaiting-completionupdate:A stopped container can never pick the job up again, so the registration is safe to remove immediately;
retryRunnerCleanupalready handles retries and thenot-foundcase.