feat(ha-repl-hardening): wire OPCode_walCatchupEntry standby handler (task 2.1)
Replace stub with ha_apply_wal_catchup_entry() calling apply_wal_entry(). CAS-advance applied_lsn on success; log ERROR and skip on failure. Standby stays in CTRL_STANDBY throughout. 3 new unit tests.
This commit is contained in:
parent
e3ca775f0d
commit
647b88ce57
5 changed files with 251 additions and 1 deletions
|
|
@ -26,6 +26,8 @@
|
|||
#include <time.h>
|
||||
|
||||
#include "config.h" /* XCE_MAXNAME_LEN, MAX_STANDBYS, etc. */
|
||||
#include "persist.h" /* persist_t, apply_wal_entry */
|
||||
#include "typemap.h" /* wal_catchup_entry_t */
|
||||
#include "xce/cluster.h" /* xce_candidate_t */
|
||||
#include "zarray.h"
|
||||
#include "raft/raft.h" /* raft_state_t, raft_init */
|
||||
|
|
@ -265,6 +267,19 @@ int ha_is_primary(const ha_state_t *ha);
|
|||
*/
|
||||
int ha_dispatch_gate(ha_state_t *ha, int opcode);
|
||||
|
||||
/*
|
||||
* ha_apply_wal_catchup_entry: apply a single WAL catch-up entry to local
|
||||
* persistent storage and advance ha->applied_lsn on success.
|
||||
*
|
||||
* Called from cluster.c OPCode_walCatchupEntry dispatch handler (Task 2.1).
|
||||
* On success (rc == 0): applied_lsn advances to entry->lsn+1.
|
||||
* On error (rc < 0): logs ERROR, returns error; caller skips (Req 3.3).
|
||||
* applied_lsn is in-memory only — not persisted to disk.
|
||||
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
|
||||
*/
|
||||
int ha_apply_wal_catchup_entry(ha_state_t *ha, persist_t *p,
|
||||
wal_catchup_entry_t *entry);
|
||||
|
||||
/* ── HA Config Bootstrap & Term Durability (ha-config-bootstrap spec) ── */
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue