Skip to content

v1.0.0-beta.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 11:10
· 96 commits to trunk since this release
v1.0.0-beta.2
34c5f5c

Added

  • Lane takeover is covered by a test that holds a real dispatch inside the window between the two storage writes a takeover performs, so the one interleaving no previous test could reach is now exercised on every run.
  • New ErrorCode::AdmissionConflict (admission_conflict) tells a caller that admission lost a race and admitted nothing, as distinct from overlap_held, which means a still-running run owns the lane.

Changed

  • Dispatch now admits again on the caller's behalf when it loses an admission race, up to three attempts in total, so admission_conflict reaches a consumer only when a lane stayed contended throughout. A lost attempt leaves the lane as it found it and never reaches handler code, and an attempt that follows also takes custody of replaying a supersession the losing attempt could not restore. Under Replace this means a dispatch that lost a race can take the lane back from the one that just won it, which is what that policy asks for; under Reject a further attempt finds the live incumbent and reports overlap_held. Re-admission is logged at debug level. Scheduled occurrence delivery still admits once, because the scheduler redelivers a due occurrence on its own.

Fixed

  • Admission and takeover paths that could not admit a run reported overlap_held, which reads as "another run is doing this work" even when the lane was free; the eight such paths now return admission_conflict, so a caller that skips on overlap_held no longer drops work nobody is doing.