Skip to content

fix: allow fenced maintenance beside persistent native publishers - #314

Merged
beinan merged 1 commit into
mainfrom
codex/native-maintenance-admission
Oct 5, 2026
Merged

beinan merged 1 commit into
mainfrom
codex/native-maintenance-admission

Conversation

@beinan

@beinan beinan commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Persistent native catch-up ownership currently excludes Compact and IndexId even between successful merge passes. Add an explicit, default-empty target opt-in for publishers verified to use the common fenced task/target/merge-claim protocol. Immutable compact preparation may overlap a native pass; compact publication and index maintenance still acquire exclusive ownership. Every admission compares the exact dedicated identity, and a changed identity invalidates compaction promotion. Completion preserves the publisher owner.

All 142 master tests passed with real etcd, including regressions for native/maintenance exclusion during publication, subsequent native drainage, stale-owner rejection, and legacy/generic/draining/wildcard protection. Clippy passed. Ordinary MergeWal and Repair do not receive this exception.

Production enablement still requires complete writer coverage, including rejecting direct legacy worker merge HTTP calls for each opted-in target, followed by a production canary. The operator guide documents these requirements and the remaining bounded-wait/fairness limitation. No targets are enabled by default.

Isolated Azure staging passed on candidate 975550f combining #310–314, using the unchanged production supervisor with local etcd and test-owned active/operator records. During continuous ingestion, a native pass reclaimed 31 generations, compact completed 32 fragments into one, IndexId completed, and a subsequent native pass reclaimed 29 generations. Persistent ownership was unchanged, final pending was zero, and all 125 full payloads matched. The 4 CPU / 8 GiB test container recorded no cgroup OOM/max events. This verifies integration; it does not establish fairness under sustained saturation or production-sized throughput.

@beinan
beinan merged commit f2527f7 into main Oct 5, 2026
15 of 17 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