Skip to content

PR hygiene cancels its own runs, and a cancelled run of the required check blocks the merge #144

Closed

Description

@CaffeinatedCoder

How does it fail?

pr-hygiene.yml runs on opened, edited, reopened, synchronize, labeled, unlabeled, milestoned, demilestoned, with concurrency: { group: pr-hygiene-<number>, cancel-in-progress: true }. A pull request that is pushed and then given its labels, milestone and body in quick succession starts four or five runs, and the in-progress ones are cancelled. "Labels and issue link" is a required check on the release branches. A cancelled run of it leaves the pull request BLOCKED, even beside a later successful run, until the cancelled run is re-run by hand. Re-running more than one at once cancels again.

What you ran

On 2026-10-28, merging the 2.3.0 pull requests. On 2026-10-29, gh run list for test/ef-sql-server (#142) at 13:43 showed five PR hygiene runs in one minute, three of them cancelled. docs/walkthrough (#141) and feat/async-stream-option-result (#139) show the same.

What you got

Cancelled runs of a required check, a BLOCKED merge state, and a manual re-run one at a time.

What you expected

Each event's run completes. The check takes seconds and reads only the event payload, so there's nothing to save by cancelling it. The latest run decides the check.

Proposal

Set cancel-in-progress: false, or drop the concurrency group. Note that with a group, a newer pending run still cancels the older pending one even when cancel-in-progress is false, so measure which choice leaves no cancelled run. Without a group, the runs may finish out of order. Check which result GitHub keeps for a required check when an earlier payload (no labels yet) finishes after a later one. Record what was measured in the workflow's header comment.

Done when

On a test pull request with labels, milestone and body set within a few seconds of the push, every hygiene run completes, none is cancelled, the required check ends green, and the pull request isn't BLOCKED by it.

Activity

  1. added this to the 2.3.0 milestone on Oct 29, 2026
  2. added
    severity/mediumInconsistency or failure in a narrow scenario
    area/releaseVersioning, changelogs, packaging and release wiring
    area/toolingThe repository's tools: prober, verdict, guard, docs-query, smoke test
    on Oct 29, 2026
  3. CaffeinatedCoder commented on Oct 29, 2026

    @CaffeinatedCoder
    OwnerAuthor

    Fixed in #149: the concurrency group is dropped from pr-hygiene.yml.

    Measured on 2026-10-29 on two draft pull requests whose labels, milestone and body were set within seconds of opening (five events each):

    • Group with cancel-in-progress: false: three of four runs cancelled. A newer pending run replaces the older pending one, so this leaves cancelled runs. (They had started no job, so no cancelled check run and nothing was blocked.)
    • No group: all five runs completed, none cancelled. Earlier runs failed on a payload without labels; the pull request was CLEAN once CI passed. The newest run decides the required check, not the last to finish: with the first run held back 75 s to finish after the one that succeeded, it was CLEAN too.

    #149 itself is the done-when test: opened, then labels, milestone and body set at once. Seven runs, none cancelled, the last two green. The header comment of the workflow records the measurement.

  4. CaffeinatedCoder commented on Oct 29, 2026

    @CaffeinatedCoder
    OwnerAuthor

    Merged in #149 (85e0713) into release/2.3.0. The concurrency group is gone; the measurement is in the workflow's header comment and above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/releaseVersioning, changelogs, packaging and release wiringarea/toolingThe repository's tools: prober, verdict, guard, docs-query, smoke testbugSomething isn't workingseverity/mediumInconsistency or failure in a narrow scenario

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions