Repository navigation
Conversation
…_slots Addresses szmyd's PR eBay#183 review follow-ups ahead of wiring append(): - Empty verdicts now need a majority of the replica set (member_count/2 + 1, leader counting itself) via a new CraftRaftProposer::member_count() seam; sub-majority fails NO_QUORUM with no local mutation, unknown membership fails closed before the fetch. - Discard the round (STALE_TERM, nothing written) if an InternalLogin moves the term while the quorum fetch is in flight. - Return pre_resolution{empty_slots, first_unresolved} so the proposer can avoid proposing past a slot whose local write failed (the only signal for a beyond-frontier slot). - Raise homestore floor to ^8.3.5 (eBay#179 needs evict_chunk_blkids); bump to 6.0.13. Co-Authored-By: Claude <noreply@anthropic.com>
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## dev/v6.x #186 +/- ##
===========================================
Coverage ? 49.78%
===========================================
Files ? 19
Lines ? 1392
Branches ? 615
===========================================
Hits ? 693
Misses ? 286
Partials ? 413 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…p loop Wire the leader-side SyncRSCommitLSN proposal and its four triggers, and make apply's peer catch-up follow the CRAFT-Design wiki's FetchData loop. - append()/propose_sync(): leader-only; runs pre_resolve_slots, clamps rs_commit_lsn below the first unresolved slot, carries only verdicts <= it, skips proposals that add nothing over the last committed one, and proposes via the new CraftRaftProposer::is_leader()/propose() seam. - request_resolution(): client Resolve; recovery gates + term fence, then propose_sync; returns resolved_upto and every Empty verdict <= it. - Background rounds (periodic every sync_rs_commit_lsn_interval writes, and the watchdog): GetRSCommitLSN(is_login=false) poll via the new CraftPeerFetcher::get_rs_commit_lsn_from_quorum (majority required), then append(max(quorum.last_append)). Silent on followers; coalesced while one is in flight. FIXME: this can mark an in-flight write Empty after it was acked -- open with szmyd. - Catch-up: one worker per device loops until no missing slot <= N remains (wiki "loop until no missing slot <= N"), with backoff via an injected sleep_fn_t (unwired = single attempt, as before) and a stop() hook. Overlapping applies hand off to the running worker; filled slots are claimed against concurrent late writes; truncate() clamps the target. - pre_resolve_slots scans missing slots from commit_lsn + 1 explicitly. - subtasks.md S5: catch-up retries until filled, per the wiki. Login (S7) is still a stub; the ReplDev binding for CraftRaftProposer, the iomgr sleep and stop() wiring are S8. Co-Authored-By: Claude <noreply@anthropic.com>
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.
…_slots
Addresses szmyd's PR #183 review follow-ups ahead of wiring append():