test(ha-commit-engine): RED integration tests for ACK feed and sync-append (task 5.1)
Tests 30-34: wired repl_on_ack feeds engine, membership mutators trigger re-evaluation, per-entry sync-append contract (stale-ACK rejection, committed_lsn unmoved on timeout, n_peers=1 replaces -ENODEV). test_repl_majority walAck cases rewired to per-LSN semantics (configAck byte-identical). Sanctioned scaffolding: entry_lsn param on repl_wait_majority_ack (legacy body byte-identical, callers pass 0), inert repl_set_commit_engine stub. 9 RED failures; baseline signatures unchanged. LSN-0 edge documented for 5.2/5.3.
This commit is contained in:
parent
c9154bd5cc
commit
d1353360cc
9 changed files with 512 additions and 79 deletions
|
|
@ -383,8 +383,15 @@ void repl_on_config_ack(replicator_t *r, repl_ep_t ep, uint64_t acked_config_lsn
|
|||
* Returns 0 on quorum, -ETIMEDOUT on timeout.
|
||||
* ============================================================ */
|
||||
|
||||
int repl_wait_majority_ack(replicator_t *r, uint32_t timeout_ms, uint8_t ack_op)
|
||||
int repl_wait_majority_ack(replicator_t *r, uint64_t entry_lsn,
|
||||
uint32_t timeout_ms, uint8_t ack_op)
|
||||
{
|
||||
/* entry_lsn is accepted but unused by this legacy counting body
|
||||
* (ha-commit-engine task 5.1 signature change): task 5.2 delegates the
|
||||
* walAck branch to commit_submit(ce, entry_lsn, COMMIT_MODE_WAIT, ...)
|
||||
* when the engine is wired. Behavior here stays byte-identical. */
|
||||
(void)entry_lsn;
|
||||
|
||||
if (r == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
|
|
@ -556,6 +563,18 @@ int repl_needs_snapshot(replicator_t *r, uint64_t standby_lsn,
|
|||
* (ha.c) for write admission. Takes ONLY r->lock — never the commit-engine
|
||||
* mutex (lock-ordering rule: gate path holds no locks when calling in).
|
||||
* (ha-commit-engine Req 3.1, 3.2, 3.3) */
|
||||
/* repl_set_commit_engine — INERT stub (ha-commit-engine task 5.1).
|
||||
* Stores nothing, so the engine is never wired and the task-5.1 RED tests
|
||||
* fail on behavior (ACK and membership events never reach the engine),
|
||||
* not on linking. Task 5.2 adds the replicator_t.ce field, stores the
|
||||
* pointer here, and feeds commit_on_ack / commit_on_membership_change
|
||||
* from repl_on_ack and the membership mutators. */
|
||||
void repl_set_commit_engine(replicator_t *r, struct commit_engine *ce)
|
||||
{
|
||||
(void)r;
|
||||
(void)ce;
|
||||
}
|
||||
|
||||
int repl_active_standby_count(replicator_t *r)
|
||||
{
|
||||
int i;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue