Claim order: per-repository fairness when one runner serves many #207

closed cmc opened this on 2026-09-10 00:48 UTC

Discussion

cmc 2026-09-10 00:48 UTC

Left from #184 B. runner next claims the oldest pending build among the repositories the key may take, instance-wide for a full-scope admin key. One repository with a deep queue holds every other repository the same runner serves; bay1's own reading was a claim wait averaging 15 minutes on a day of MR stacks, all from one repository.

Since v1.17.0 a runner key is confined to its attachments, so the question is narrower than it was: it matters only for a runner attached to several repositories, or an operator's admin runner. Decide:

  • Leave oldest-first and document it: a runner serving one repository cannot be starved, and an operator who wants isolation runs two.
  • Or rotate across repositories in the candidate set: take the oldest build of the repository that has waited longest since its last claim, so one queue cannot hold the rest. ClaimBuild grows a subquery; the scoped test and the push-shape table on the CI wiki page carry the rule.

Ref #184

referenced in commit 7a667c7b40 by cmc: wiki: claim order and the missing per-account cap, as open decisions

2026-09-10 01:12 UTC

closed by commit 935a8ada01 by cmc: wiki: claim order stays oldest-first

2026-09-10 01:56 UTC