Skip to content

Reserve recovery workers and cancel obsolete gate waits - #204

Merged
PLN merged 1 commit into
mainfrom
fix/recovery-worker-admission
Sep 13, 2026
Merged

PLN merged 1 commit into
mainfrom
fix/recovery-worker-admission

Conversation

@PLN

@PLN PLN commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Canceled automatic recovery could remain blocked on a unit gate held by a newer operation. Recovery now uses its accepted cancellation context while acquiring the gate, so obsolete waits exit before that newer native operation finishes. Initial launch failures also reserve recovery before spawning; duplicate requests create no worker. The accepted recovery record carries its exact invocation owner into the worker.

The strengthened existing regression fails on previous main after a newer failed explicit launch cancels recovery while retaining the gate. Twenty repetitions of the recovery identity/backoff matrix pass with the fix. Full uncached race tests passed (manager 60.287s, journal 41.968s), plus vet, Windows/Linux staticcheck, documentation links and complete diff/privacy review.

Exact source 6591e9ac16f49a8c1a96bd68a19c5c433db4564a passed CI 34767502672 and eight cases ten times per SYSTEM/headless standard-user identity (9.957s/9.123s), including genuine native restart/backoff and invocation identity. No cases skipped; fixture processes, linger and profile ownership were fully cleaned up, and binary/source identity verified in retained evidence. Full R2 writer and worker-class acceptance remains open.

@PLN
PLN merged commit 8a39dff into main Sep 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant