Repository navigation
Stop cancelling in-progress Composer runs on main - #1080
Conversation
composer-compatibility.yml was the only compat workflow with an unconditional cancel-in-progress. Every main push therefore killed the composer run already in flight. A run takes about an hour of wall time and main merges in bursts, so between 2026-10-05 and 2026-10-07 only 11 of 84 main pushes got a composer verdict. 30 of the cancelled runs had already started jobs, which threw away 943 job-minutes. Those cancellations also killed the only rust-cache writers (save-if is main-only) mid-save. Supersede stale PR runs only, as bun, go, gradle, pdm, poetry, sbt and vlt already do. A newer main push now waits as the one pending run instead of killing the one in progress. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016KMvUkRpp6WKLjgz3pTqqn
|
bugbot run Generated by Claude Code |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit b6c325f. Configure here.
|
Resolved: the two Maven e2e legs that failed on Maven Central 429s passed on a single re-run (run 37671925752, attempt 2), and For the record, the first attempt failed with:
Neither failure was caused by this PR, which only changes the Generated by Claude Code |
|
[agent] Ready for review at
Generated by Claude Code |
Problem
composer-compatibility.ymlis the only compat workflow whose concurrency block has an unconditionalcancel-in-progress: true. As a result, every push to main kills the Composer run that is already in progress on main. A full Composer run takes about an hour of wall time (run 37652576922: 16:30 → 17:37, 54 job-minutes), and main merges come in bursts, so almost no main commit gets a Composer verdict.Main push runs from 2026-10-05 11:43Z to 2026-10-07 19:00Z (85 main commits), from the Actions API:
cancel-in-progress: true)run_idgroup)save-if: ${{ github.ref == 'refs/heads/main' }}), so killing them mid-run also kills the cache save that Composer PR builds restore.Root cause
The concurrency block for this workflow was never switched to the convention the other compat workflows use and document. bun and vlt both say: "Supersede stale PR runs only: main runs are the only rust-cache writers, so push, dispatch and schedule runs are never cancelled mid-save."
Fix
One line, plus a comment that matches the bun and vlt wording:
Proof
actionlint .github/workflows/composer-compatibility.ymlis clean (v1.7.7), and the YAML parses to the intendedconcurrencymapping.Not in this PR (follow-up candidates)
Every compat workflow grouped on
github.ref(bun, go, gradle, pdm, poetry, sbt, vlt, and the bench job) still drops the pending main runs between bursts. In the same window: vlt 57/73 cancelled, sbt 43/52, bun 41/54, go 59/84, bench 52/73. #1018 fixed this forci.ymlby grouping push runs per commit. Doing the same for the compat matrices would cost roughly 10k job-minutes a day at the current merge rate (sbt ~197, bun ~116 and vlt ~102 job-minutes per run). That is an owner decision on cost vs. per-commit attribution, so it is left out of this PR.🤖 Generated with Claude Code
https://claude.ai/code/session_016KMvUkRpp6WKLjgz3pTqqn
Generated by Claude Code
Note
Low Risk
Workflow-only concurrency tweak with no job matrix, trigger, or application code changes.
Overview
Composer compatibility CI no longer cancels in-progress
mainpush runs when another commit lands onmain.cancel-in-progressis now${{ github.event_name == 'pull_request' }}, matching other compat workflows (e.g. bun, vlt).PR behavior is unchanged: newer pushes on the same PR still cancel the older run. On
main, the active run finishes (important because those jobs are the only rust-cache writers viasave-if), so long Composer matrix runs are not discarded mid-flight and cache saves can complete.Reviewed by Cursor Bugbot for commit b6c325f. Configure here.
Generated by Claude Code