Repository navigation
fix(wal): create answers 409 for an existing repository, warm handle or not - #101
Open
jonasgrosch wants to merge 1 commit into
Open
jonasgrosch wants to merge 1 commit into
jonasgrosch wants to merge 1 commit into
Conversation
…or not
`PUT /{owner}/{repo}` answered 201 for a repository that already existed
whenever this instance held its handle: `Registry::create` returned the
cached handle before the manifest Create PUT. A cold instance answered 409
for the same repository, so the answer depended on which host you hit.
The Create PUT is now the only authority (ROUNDTRIPS §3, "let the
conditional write be the read"): its 412 is AlreadyExists on every
instance, and a warm handle no longer masks a repository deleted by
another host (the create succeeds and replaces the stale handle).
`open_or_create` (auto_create_on_push, import) treats losing the create
race as success and opens the winner's repository — the same-instance
race used to be absorbed by the warm-handle shortcut.
Round trips: create of a new repository 1 → 1 (Create PUT); create of an
existing one 0 (warm) / 1 (cold) → 1 on both; auto-create unchanged, its
lost race adds only the open it needs. Pinned in the sim's
healthy_request_round_trip_budgets and the ROUNDTRIPS table.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
PUT /{owner}/{repo}answered 201 for an existing repository whenever the instance held itshandle:
Registry::createreturned the cached handle before the manifest Create PUT. A coldinstance answered 409 for the same repository.
its 412 is
AlreadyExists→ 409 on every instance. A warm handle no longer masks a repositorydeleted by another host.
open_or_create(auto_create_on_push, import) treats losing the create race as success andopens the winner's repository; the warm-handle shortcut used to absorb the same-instance race.
Pinned in
healthy_request_round_trip_budgetsand the ROUNDTRIPS table.Tests: create twice → 201 then 409 (warm and cold instance), re-create after a delete on another
host → 201, concurrent creates → one 201 and one 409 (one instance and across two), auto-create
push works and a later create is 409; registry-level equivalents in walgit-wal. e2e 40 passed;
sim 19 passed. (
wal::test_serve_level_links_base_from_store_mountfails only when the suite runsas root, which ignores
chmod 000; unrelated.)🤖 Generated with Claude Code