forked from lei.chen/myxce
9.1 replication + partition catch-up: 3-entry quorum replication then Log Matching; isolate a follower, heal, assert next_index walks back, catch-up, Log Matching. 9.2 divergent-suffix truncation (G3): follower with a same-index/different-term tail converges via conflict-truncate; byte-for-byte prefix equality + Log Matching. 9.3 drop/dup/reorder convergence: dropped AE recovered; duplicate already-have AE is a no-op; genuine out-of-order delivery (entry-3 AE before entry-2) rejected via the logOk gap with no phantom gap; converges + Log Matching (Req 8.3). 9.4 chaotic-churn G5/bug-851 regression: stale-term node rejoins under a higher-term leader, adopts the term via the AE/heartbeat UpdateTerm path (load-bearing: would fail as stale-reject if UpdateTerm-on-AE regressed), voted_for cleared, no second leader, and a post-converge election campaigns strictly above the old term (cannot reuse). Log Matching holds throughout. Review-applied: genuine reorder in 9.3; active re-election + voted_for assertions in 9.4. ASAN green (219 tests). |
||
|---|---|---|
| .. | ||
| config-upgrade-snapshot | ||
| controller-status | ||
| election-iomgr-refactor | ||
| ha-commit-barrier-rollout | ||
| ha-commit-durability | ||
| ha-commit-engine | ||
| ha-config-bootstrap | ||
| ha-consistency-invariants | ||
| ha-convergence-recovery | ||
| ha-elect-ctx-lifecycle | ||
| ha-heartbeat-committed-propagation | ||
| ha-heartbeat-liveness | ||
| ha-peer-connection-reuse | ||
| ha-prevote | ||
| ha-repl-hardening | ||
| ha-single-leader-role | ||
| ha-term-safety | ||
| ha-wal-replication | ||
| libxce-failover | ||
| raft-commit-safety | ||
| raft-library | ||
| raft-log-replication | ||
| raft-sim-conformance | ||
| resval-id-decoupling | ||
| scheduler-controller-msg-gap | ||
| worker-join-refactor | ||
| xce-test-e2e-primitives | ||
| .gitignore | ||