feat(ha-config-bootstrap): implement EPOLLRDHUP failover and heartbeat timeout vtask (task 9.4)
This commit is contained in:
parent
9bbff7b016
commit
0d5f2cb1bb
6 changed files with 434 additions and 1 deletions
|
|
@ -411,6 +411,28 @@ int xce_probe_config_tag(const char *host, uint16_t port, uint64_t *tag_out);
|
|||
*/
|
||||
ctrl_role_t ha_wait_for_heartbeat_or_timeout(ha_state_t *ha);
|
||||
|
||||
/* ── Task 9.4: EPOLLRDHUP Failover and Heartbeat Timeout (Req 6.2–6.4, 6.8) ─
|
||||
|
||||
* ha_on_primary_ctrl_fd_rdhup: EPOLLRDHUP event handler.
|
||||
* Closes primary_ctrl_fd, transitions to CTRL_ELECTING, truncates WAL to
|
||||
* last_known_committed_lsn, fires am_i_primary_quorum (via cluster when non-NULL).
|
||||
* Pass c == NULL to skip persist/election (unit test mode).
|
||||
*/
|
||||
void ha_on_primary_ctrl_fd_rdhup(ha_state_t *ha, cluster_t *c);
|
||||
|
||||
/*
|
||||
* ha_arm_heartbeat_timeout_vtask: start/re-arm the heartbeat watchdog thread.
|
||||
* Fires ha_on_primary_ctrl_fd_rdhup after election_timeout_ms + rand_jitter of
|
||||
* silence. Calling ha_on_heartbeat_received() resets the deadline.
|
||||
*/
|
||||
void ha_arm_heartbeat_timeout_vtask(ha_state_t *ha, cluster_t *c);
|
||||
|
||||
/* ha_on_heartbeat_received: reset the heartbeat deadline (Req 6.3). */
|
||||
void ha_on_heartbeat_received(ha_state_t *ha);
|
||||
|
||||
/* ha_disarm_heartbeat_timeout_vtask: stop the heartbeat watchdog thread. */
|
||||
void ha_disarm_heartbeat_timeout_vtask(ha_state_t *ha);
|
||||
|
||||
/* ── Task 9.2: Persistent Control Channel (Req 6.1) ───────────────────────── */
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue