feat(ha-repl-hardening): populate stateReport in standby heartbeat reply (task 2.3)
OPCode_nop handler now sends stateReport {applied_lsn, config_tag}
instead of nodata. Function in ha.c for unit-test linkability.
Two tests: warm state and zero-state fresh standby (Req 1.4).
This commit is contained in:
parent
6bbcff62ca
commit
7dc657b1bd
5 changed files with 128 additions and 5 deletions
|
|
@ -918,6 +918,22 @@ int ha_apply_wal_catchup_entry(ha_state_t *ha, persist_t *p,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* ha_nop_reply_state_report — populate *sr from ha state and wire into reply.
|
||||
* Reads ha->applied_lsn (atomic) and myconf->config_version_tag, stores them
|
||||
* in *sr, then sets reply_out->data_which = stateReportMsg and
|
||||
* reply_out->data.state_report = sr.
|
||||
* Caller keeps *sr alive until xce_reply() serialises the message.
|
||||
* Requirements: 1.1, 1.3, 1.4 (ha-repl-hardening spec) */
|
||||
void ha_nop_reply_state_report(ha_state_t *ha, myconf_t *myconf,
|
||||
state_report_t *sr, xce_reply_t *reply_out)
|
||||
{
|
||||
sr->applied_lsn = atomic_load_explicit(&ha->applied_lsn,
|
||||
memory_order_acquire);
|
||||
sr->config_tag = myconf ? myconf->config_version_tag : 0;
|
||||
reply_out->data_which = RequestReply_data_stateReportMsg;
|
||||
reply_out->data.state_report = sr;
|
||||
}
|
||||
|
||||
/* ── Dispatch gate (req 1.3, 1.4) ──────────────────────────────────────────
|
||||
*
|
||||
* Called from myreq_handler() in cluster.c before the opcode switch.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue