feat(ha-heartbeat-committed-propagation): stamp own committed+term on primary heartbeat (task 3.1)
primary_heartbeat_fn now sends xce_ha_heartbeat_req with the primary's OWN atomic ha->term / persist.committed_lsn / committed_config_tag (NOT last_known_*), snapshotted once per tick (Req 1.1, 3.4). XCE_TESTING seam adds a capturing ha_heartbeat_req_hook (precedence new->legacy->real) so existing ha_nop_req_hook liveness tests stay green; send-failure WARN + last_push_time unchanged. New test poisons last_known_* to prove own-committed. Direct binary 119/0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
90e7179a89
commit
d534f83e46
4 changed files with 158 additions and 3 deletions
|
|
@ -1076,6 +1076,22 @@ extern int (*ha_send_ctrlhello_hook)(void *c);
|
|||
*/
|
||||
extern int (*ha_push_config_hook)(void *c);
|
||||
|
||||
/*
|
||||
* ha_heartbeat_req_hook: test-only seam for the per-standby HA heartbeat send
|
||||
* in primary_heartbeat_fn (Task 3.1). When non-NULL, primary_heartbeat_fn
|
||||
* calls this INSTEAD OF xce_ha_heartbeat_req, passing the SAME three values it
|
||||
* stamps onto the wire — the primary's CURRENT own term / committed_lsn /
|
||||
* committed_config_tag. A test installs it to capture those args and assert
|
||||
* the heartbeat carries the primary's own committed state (Req 1.1, 3.4).
|
||||
*
|
||||
* Precedence (XCE_TESTING only): ha_heartbeat_req_hook (if set) takes priority,
|
||||
* else the legacy ha_nop_req_hook (if set), else the real xce_ha_heartbeat_req.
|
||||
* Keeping ha_nop_req_hook as a fallback preserves the existing liveness tests.
|
||||
*/
|
||||
extern int (*ha_heartbeat_req_hook)(endpoint_t *ep, uint64_t term,
|
||||
uint64_t committed_lsn,
|
||||
uint64_t committed_config_tag);
|
||||
|
||||
/*
|
||||
* ha_repl_push_config_for_standby_hook: test-only seam for the per-standby
|
||||
* config push triggered by the heartbeat-reply decision loop (Task 3.3).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue