Repository navigation
Withdraw the signed head and mirror copy when a poll blocks (RD-2B) - #49
Merged
Merged
Conversation
Publisher.block() durably blocks the namespace and then deletes every Redis copy (SignedMirror: head first, then the whole-generation key), so a TRUNCATE or DDL stops bounded hits at once instead of up to head_ttl_ms later. PostgresWorker routes its safety blocks through it. RD-2A (bootstrap self-refusal) did not reproduce on PostgreSQL 16.15: the walsender releases a new slot as soon as CREATE_REPLICATION_SLOT returns, so pg_replication_slots.active is false during the exported snapshot. Added a direct SignedMirror bootstrap test to keep that pinned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0194kAmY4QqQGabdoB3xGFsr
Owner
Author
|
This failure is not from this PR. It is the known drain-rate limit on Generated by Claude Code |
dbccpage
marked this pull request as ready for review
November 11, 2026 10:07
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.
Requested by Jeremy · project thread
Stacked on #48 (RD-1). Review that first; this diff is only the last commit.
What
Publisher.block(reason): durably blocks the namespace, then deletes every Redis copy (SignedMirror.withdraw_all: head first, then the whole-generation key). A Redis failure here cannot undo the block.PostgresWorkerroutes its safety blocks through it, soTRUNCATE/DDL stops bounded hits immediately instead of up tohead_ttl_ms(15 s) later.RD-2A did not reproduce
On PostgreSQL 16.15 the walsender releases a new slot as soon as
CREATE_REPLICATION_SLOT ... (SNAPSHOT 'export')returns, sopg_replication_slots.activeis false while the exported snapshot is read andSignedMirror.put()signs fine duringbootstrap(). Probe:active=False, active_pid=NULLright after slot creation with the replication connection still open. I addedtest_production_bounded_bootstrap_signs_its_own_head(bootstrap straight throughSignedMirror) to keep that pinned, and made no code change for 2A.Evidence
test_production_bounded_block_withdraws_head_at_once[truncate|schema_change]: fails on main (still a hit after the block), passes here.Publisher.blockwith and without a Redis failure.Generated by Claude Code