Skip to content

Keep resident WAL catch-up scheduled without external refill - #329

Merged
beinan merged 2 commits into
mainfrom
codex/fair-wal-recovery
Oct 8, 2026
Merged

beinan merged 2 commits into
mainfrom
codex/fair-wal-recovery

Conversation

@beinan

@beinan beinan commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Resident masters can finish their 16-pass catch-up slice while WAL remains, then wait for a coarse stats scan or an external agent to enqueue another task. This change persists continuation demand before the slice returns and adds a bounded manifest-only discovery loop for already-owned local append targets, independent of full stats scans.

The discovery loop shares one fleet-wide reservation, rotates persistent cursors, uses at most two metadata readers, preserves external owners and canonical claims, and respects the durable catch-up failure deadline. It never replays raw WAL, resets ownership, changes rollout allowlists, or cancels legacy handlers. Dedicated executor mode retains its existing scheduling behavior.

Validation: all five focused local tests passed against isolated etcd, and all 11 CI checks passed, including Rust unit/integration/HA tests, coverage, Clippy, and Python tests. Tests cover replica deduplication, missing-table isolation, cursor recovery, external-owner preservation, retry backoff, and a 17-generation backlog spanning two resident slices without the scanner. See docs/resident-wal-recovery.md for operational limits; legacy cancellation and flush scheduling remain separate work.

@beinan
beinan marked this pull request as ready for review October 8, 2026 07:22
@beinan
beinan merged commit 3d8d6ba into main Oct 8, 2026
11 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