Repository navigation
fix: allow fenced maintenance beside persistent native publishers - #314
Merged
Merged
Conversation
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.
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
975550fcombining #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.