Repository navigation
fix(store): resume learner promotion on retry - #3419
Conversation
Separate newly created learners from pending voter promotions. Resume catch-up for existing learners and retire stale learners after configuration commits. Cover timeout retries, partial promotion, failures and leader removal in production-method regressions. Document retry behavior and actual membership checks.
Exercise learner removal followed by a failed voter configuration. Retry the same target from that intermediate state through the production method. Verify voting membership converges without destroying replicas.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3419 +/- ##
============================================
+ Coverage 57.27% 57.41% +0.14%
+ Complexity 6577 2422 -4155
============================================
Files 776 776
Lines 68881 68883 +2
Branches 9431 9433 +2
============================================
+ Hits 39449 39547 +98
+ Misses 25804 25702 -102
- Partials 3628 3634 +6
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Document the per-attempt catch-up timeout. Explain pending retries when a peer cannot catch up. Keep durable task handoff outside this retry fix.
Review summary (head
|
Before → After
Before: a membership-change retry could treat existing learners as completed additions and return OK without promoting them after a timeout.
After: distinguish newly added learners from target members still awaiting promotion, resume catch-up/promotion on retry, and clean up stale learners while retaining node-destruction ordering.
Validation boundary
The source PR reports 13 regression tests invoking the production method with simulated Node/RPC boundaries, including timeout/retry and partial promotion; the original implementation failed nine of the first 11 cases. These tests do not establish independent multi-node failure/recovery acceptance.
Source PR: 🔗 hugegraph/hugegraph #342
Visual overview
Retries distinguish absent members, existing learners and voters; existing learners still catch up and attempt promotion. This diagram explains the code path, not real-cluster fault or RC acceptance.