forked from lei.chen/myxce
feat(ha-term-safety): route AppendEntries intake through library + leaderCommit wire (task 3.2)
This commit is contained in:
parent
6a519a928b
commit
754e586f8f
10 changed files with 508 additions and 168 deletions
|
|
@ -1012,6 +1012,22 @@ void ha_observe_heartbeat_committed(cluster_t *c, uint64_t committed_lsn,
|
|||
*/
|
||||
void ha_consume_heartbeat_committed(cluster_t *c, const heartbeat_msg_t *hb);
|
||||
|
||||
/*
|
||||
* ha_consume_append_entries (ha-term-safety task 3.2): route ONE incoming
|
||||
* heartbeat (entry->n_entries==0) or replication (entry->n_entries>0, one entry)
|
||||
* AppendEntries through the raft library (raft_on_append_entries_request) so
|
||||
* UpdateTerm (G5), logOk (G2), and the (term,lsn) conflict-truncate (G3) happen
|
||||
* via the wired callbacks — replacing the term-blind term handling in
|
||||
* ha_consume_heartbeat_committed and the committed-boundary truncate in
|
||||
* ha_rejoin_reconcile. `entry` carries the AppendEntries metadata (prev tuple +
|
||||
* leader_commit) on its top-level fields. `leader_idx` is the sending leader's
|
||||
* raft peer index. Returns 0 on every path (never crashes the receive thread);
|
||||
* the AE result (term adoption / append / truncate / reject) is reflected in the
|
||||
* library + WAL state. The ACK reply that carries success/match_index is task 3.3.
|
||||
*/
|
||||
int ha_consume_append_entries(cluster_t *c, wal_catchup_entry_t *entry,
|
||||
int leader_idx);
|
||||
|
||||
/* ha_heartbeat_is_fresh: 1 if a primary message arrived within
|
||||
* heartbeat_timeout_ms (leader-stickiness predicate). Exposed for PreVote
|
||||
* denial-reason logging in cluster.c; pure read, no state change. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue