Build against the engine fix for the unsettled-path commit race - #291
Merged
Conversation
mdbase-rs d0b0070 (callumalpass/mdbase-rs#54) rejects a commit against a path another commit owns but has not settled. Without it two writers can both take commit points on one baseline, and whichever settles second strands its journal as `NeedsManualRecovery`, which fails every later `Collection::open`. That race is the intermittent `unified_cli` failure in the `hosted-provider` job, which accounts for most recent Server CI failures and has hit main. The pinned revision and the merge it advances from are content-identical (`git diff 7183962..ad2bdb0` is empty), so this ships exactly that fix and no other engine change.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
deploy/docker/mdbase-rs-revisiontod0b0070— the merge of callumalpass/mdbase-rs#54.What it fixes
The engine rejected nothing when a commit targeted a path another commit owned but had not settled, so two writers could both take commit points on one baseline. Whichever settled second found a revision matching neither its before nor its intended state, was reported as
manual_recovery_required, and left a journal stranded asNeedsManualRecovery— whichrecover_pendingthen fails on at every laterCollection::open.An ordinary lost write race could therefore leave a collection unopenable until someone deleted the transaction directory by hand.
Why it matters here
That race is the intermittent
unified_clifailure in thehosted-providerjob — the job behind most recent Server CI failures, which has also hitmain. #289 and #290 are both currently red on it. This should make them deterministic rather than lucky.Scope
The pinned revision and the merge it advances from are content-identical:
So this ships exactly the #54 fix and no other engine change.
Verification
mdbase-rs #54 passed 7/7 including Ubuntu, macOS and Windows test jobs. Its two regression tests fail without the fix, verified by disabling it: