feat(ha-term-safety): restore controller build + wire vote/AE term wire fields (tasks 1.1, 1.2)
1.1: WalCatchupEntry gains term@4/prevLogIndex@5/prevLogTerm@6 (append-only). 1.2: RequestVote/PreVote gain lastLogTerm@4/lastLogIndex@5; cluster.c vote callers fixed to the extended library arity (RESTORES xce_controller + controller_unit_test compile+link, broken by the raft-commit-safety signature extension); ha.c emits the candidate's last-log tuple on send. 5 minimal stub log/commit callbacks wired into s_real_cbs so raft_init's new non-NULL requirement is satisfied — tasks 2.x replace them with real bodies; the logOk freshness gate is inert until the term seam (1.3) + on_get_entry_term (2.2). Pre-existing test_repl_unit.c wal_catchup -EAGAIN failures + ASAN leaks are an overlayfs /tmp fsync env artifact (bug-850), not from this task (untouched paths; append-only schema cannot affect the @3 entries-list decode). Build/baseline isolation is blocked by a c-capnproto flake-hash drift — see Implementation Notes.
This commit is contained in:
parent
e8e41752c0
commit
004a40bb3b
9 changed files with 264 additions and 9 deletions
|
|
@ -474,7 +474,13 @@ static int pre_vote_dispatch_decide(ha_state_t *ha,
|
|||
|
||||
int granted = 0;
|
||||
if (freshness_ok && from_idx >= 0)
|
||||
granted = (raft_on_pre_vote_request(&ha->raft, from_idx, cand_term)
|
||||
/* ha-term-safety task 1.2: pass candidate (lastLogTerm, lastLogIndex).
|
||||
* These gate tests do not exercise the logOk freshness path, so the
|
||||
* tuple is (0,0); the library's local last-log term also reads 0 (the
|
||||
* on_get_entry_term stub), so logOk grants and pre-existing gate
|
||||
* behavior is unchanged. */
|
||||
granted = (raft_on_pre_vote_request(&ha->raft, from_idx, cand_term,
|
||||
0, 0)
|
||||
== RAFT_GRANT) ? 1 : 0;
|
||||
|
||||
/* PreVote NEVER adopts the candidate term: the reply carries the voter's
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue