Repository navigation
CLP-964 Make concurrency queueing explicit so pending runs are not silently cancelled in sonar-analyzer-commons - #539
Conversation
queue defaults to single, so a pending run is silently cancelled when a third run joins the group even with cancel-in-progress: false. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Code Review ✅ Approved🟡 Medium risk · Workflow concurrency now retains default-branch runs and supersedes PR runs Makes concurrency queueing policy explicit across workflows to prevent pending runs from being silently cancelled. Uses conditional expressions to keep Review coverage🧪 Functional validation No results 📋 Rules No rules evaluated 🤖 Auto-approval Not enabled · Set up OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
|





Part of CLP-959
concurrency.queuedefaults tosingle, which allows only one run to sit inpending.With
cancel-in-progress: falsethe running job is protected, but as soon as a third runjoins the group the pending run is silently cancelled: it never executes, nothing retries
it, and no failure is reported anywhere.
This PR makes the queueing policy explicit in every concurrency block of this repository.
queue.github/workflows/build.ymlWhy
queueis an expression herecancel-in-progressinbuild.ymlis an expression, and GitHub rejectsqueue: maxcombined withcancel-in-progress: truewith a workflow validation error.That error does fire for expressions, not just the literal
true— so a plainqueue: maxwould have stopped PR runs from starting at all.
Setting
queueto the exact logical inverse of the cancel expression keeps the pair valid inboth states:
cancel-in-progressqueuefalsemaxtruesingleVerified empirically on
SonarSource/core-languages-toolingwith throwaway probe workflows(branch since deleted):
queue: max+cancel-in-progress: <expr → true>→ run created 0 jobs, "workflow file issue"cancel-in-progress: <expr → false>+queue: <expr → 'max'>→ successcancel-in-progress: <expr → true>+queue: <expr → 'single'>→ successcancel-in-progress: <expr → true>+queue: <expr → 'max'>→ 0 jobs (proves thequeueexpression is genuinely evaluated, not ignored)🤖 Generated with Claude Code