feat(ha-commit-barrier-rollout): config barrier with production ACK ingestion (task 5.2 + r1)
configAck branch: per-push majority (acked_config_lsn >= push_tag, 1+count > n_peers/2 over r->ce->n_peers, n_peers<=1 immediate, ce==NULL -EINVAL); legacy >0 counting and n_active==0 shortcut dead. push_config_to_standbys returns the barrier result; upgrade failure -> send_upgrade_error (rc forwarded), no success ACK, no restart, committed_config_tag success-only. Remediation r1 (two CRITICAL review findings): - F1: wire production config-ACK ingestion — replconfigpushreplymsg decode branch in repl_ack_decode_and_dispatch -> repl_on_config_ack on the promoted-vote ep; + defensive cluster.c OPCode_reply case. Closes the unlanded half of ha-config-bootstrap 8.1; without this the barrier would brick every multi-member config upgrade. No schema change. - F2: keep the barrier off the iomgr thread — export push_config_transport_only (non-blocking) for the 5 ha.c + join.c streaming sites; barrier path now vtask-only (do_upgrade_config). Wire-path test drives real capnp ACK bytes through the production decode branch. 30/30 rollout, 6/6 repl_majority, 46/46 config_repl; census 0 FAIL; pre-existing fixture leak only (less than baseline).
This commit is contained in:
parent
9cdeba5816
commit
5a2fae1d37
12 changed files with 1034 additions and 399 deletions
|
|
@ -80,10 +80,13 @@ void repl_on_config_ack(replicator_t *r, repl_ep_t ep, uint64_t acked_config_lsn
|
|||
/* Sync replication (stub in P2-1; wired in P2-3) */
|
||||
int repl_wait_ack(replicator_t *r, uint64_t target_lsn, uint32_t timeout_ms);
|
||||
|
||||
/* Majority-quorum ACK wait (task 7.3; ha-commit-engine task 5 adapter).
|
||||
* entry_lsn: the WAL entry the caller waits on. The walAck branch delegates
|
||||
* to the commit engine for per-LSN evaluation when wired (task 5.2); the
|
||||
* legacy counting body ignores it. configAck callers pass 0 (ignored). */
|
||||
/* Majority-quorum ACK wait (task 7.3; ha-commit-engine task 5 adapter;
|
||||
* configAck track hardened by ha-commit-barrier-rollout task 5.2).
|
||||
* entry_lsn: walAck — the WAL entry the caller waits on, delegated to the
|
||||
* commit engine for per-LSN evaluation; configAck — the in-flight config
|
||||
* push tag, counted as acked_config_lsn >= tag with majority
|
||||
* 1 (self) + count > n_peers / 2 over configured members (no second
|
||||
* parameter — the configAck branch reuses this one). */
|
||||
int repl_wait_majority_ack(replicator_t *r, uint64_t entry_lsn,
|
||||
uint32_t timeout_ms, uint8_t ack_op);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue