e85100d761
test(ha-peer-connection-reuse): complete tasks 7.1, 7.2, 7.3 — all validation done
...
Task 7.1 (unit tests) was already complete with 8 tests in
test_ha_connection_reuse.c. Added two new tests:
Task 7.2 — test_follower_passive_no_outbound_connect (Req 2.1, 2.4):
Verifies raft_cb_become_follower sets role=CTRL_STANDBY and nulls all
votes[i].ep. The old fetch_config_from_primary path is gone; standbys
never initiate outbound connects after election loss.
Task 7.3 — test_promoted_ep_repl_ack_promotes_to_primary (Req 5.2, 5.4):
Injects two OPCode_replCatchUpDone packets via peer_ctrl_msg_handler in
CTRL_PRIMARY_COMMITTING with n_peers=4 (5-node cluster, quorum=2 ACKs).
Verifies repl_ack_count reaches 2 and role transitions to CTRL_PRIMARY.
Added vote_ep_ctx_set_cluster_for_test() seam so vctx->c is non-NULL
when ha_repl_ack_received fires ha_promote_to_primary.
All 62 controller tests pass; ASAN clean.
spec: .kiro/specs/ha-peer-connection-reuse/tasks.md all tasks [x]
2026-06-01 07:53:02 +00:00
937605ec60
feat(raft-library): tasks 6.4 + 7 complete — all ASAN-clean, hooks verified, spec closed
2026-05-31 09:25:20 +00:00
fd9933c9d0
feat(raft-library): task 6.3 — delegate election dispatch to raft_* API in ha.c + cluster.c
2026-05-31 08:43:01 +00:00
8f0d2d55c3
feat(raft-library): task 6.2 — real raft callbacks in ha.c; fix double-free + dead stubs
2026-05-31 07:53:00 +00:00
b77525deb0
feat(raft-library): task 6.1 — raft_state_t field in ha_state_t, raft_init with no-op stubs
2026-05-31 07:20:15 +00:00
6bdf7edacf
feat(raft-library): task 5.4 — Groups F+G, 6 test cases (RDHUP failover + split-brain)
2026-05-31 07:05:45 +00:00
5c677bc52d
feat(raft-library): task 5.3 — Groups D+E 7 test cases; fix Req 6.3 on_cancel_timeout in decided path
2026-05-31 06:58:02 +00:00
0aa4c84bfe
feat(raft-library): task 5.2 — protocol Groups C+H, 11 test cases (eligible policy + persist)
2026-05-31 06:34:33 +00:00
389047194f
feat(raft-library): task 5.1 — protocol Groups A+B, 10 test cases (election + voted_for)
2026-05-31 06:26:52 +00:00
c1b07392df
feat(raft-library): task 4.2 — sim deliver/partition/timeout/start-all; 4 tests
2026-05-31 06:20:35 +00:00
d2e2c1ef8a
feat(raft-library): task 4.1 — sim data structures, raft_sim_init, dump_log; 2 tests
2026-05-31 06:11:34 +00:00
85a7e325a8
feat(raft-library): task 3.5 — election timeout, leader-lost, check-and-start; 6 tests
2026-05-31 06:02:29 +00:00
f81054930f
feat(raft-library): task 3.4 — raft_on_vote_reply quorum tracking; 6 tests + review fixes
2026-05-31 05:56:34 +00:00
e0bcb35554
feat(raft-library): task 3.3 — raft_on_vote_request 6-step decision; 10 tests
2026-05-31 05:44:34 +00:00
4955fa3805
feat(raft-library): task 3.2 — raft_start_election with single-node shortcircuit; 4 tests
2026-05-31 05:30:00 +00:00
1aa7db4583
feat(raft-library): task 3.1 — raft_init validation, state init, raft_snapshot; 12 tests
2026-05-31 05:18:42 +00:00
d109155a21
feat(raft-library): task 2.2 — raft_callbacks_t, raft_config_t, public API signatures
2026-05-31 05:03:04 +00:00
66c9810823
feat(raft-library): task 2.1 — raft_role_t, raft_state_t, raft_snapshot_t in raft.h
2026-05-31 04:56:49 +00:00
7f7de013b9
feat(raft-library): task 1.1 — build scaffold (raft/ files + meson wiring)
2026-05-31 04:51:42 +00:00
e875cae7ad
chore(election-iomgr-refactor): mark tasks 6.1 and 6.2 complete in tasks.md
2026-05-30 13:46:17 +00:00
27ea14cd9a
feat(election-iomgr-refactor): remove old blocking election code (am_i_primary_quorum, vote_request_thread, bootstrap_config_if_needed) — task 5.3
2026-05-30 13:04:19 +00:00
2e5681387a
feat(election-iomgr-refactor): restructure myapp_run to fully non-blocking async startup — task 5.1
2026-05-30 12:26:56 +00:00
f4a6726f1b
feat(election-iomgr-refactor): COMMITTING path in ha_elect_evaluate_and_signal + committing/election timeout watchdogs — tasks 4.1, 4.3, 4.4
2026-05-30 11:37:12 +00:00
e6135ea828
feat(election-iomgr-refactor): extend ha_dispatch_gate for CTRL_PRIMARY_COMMITTING — task 3.1
2026-05-30 10:28:36 +00:00
b8e6404fe2
docs(ha-bootstrap): fix config tag length: 12 hex chars (6 bytes), not 16
2026-05-29 13:27:01 +00:00
96df7285da
docs(ha-config-bootstrap): add path verification warning — config must be in workdir/myname/conf/
2026-05-29 11:11:29 +00:00
25c71adffb
docs(ha-config-bootstrap): Test 11.1 now covers config replication verification
2026-05-29 11:02:45 +00:00
bc2aaff089
docs(ha-config-bootstrap): only primary needs initial config — standbys get it via replication
2026-05-29 10:59:51 +00:00
f465af0c0c
docs(ha-config-bootstrap): add initial cluster config installation steps
2026-05-29 10:57:09 +00:00
bb4e23663a
docs(ha-config-bootstrap): update manual tests to 3-node cluster (odd peer count design requirement)
2026-05-29 10:41:11 +00:00
abdb195c8e
docs(ha-config-bootstrap): add TLS cert setup instructions to manual test guide
2026-05-29 10:34:41 +00:00
e88c7bebe9
docs(ha-config-bootstrap): add manual integration test guide with correct worktree paths
2026-05-29 10:20:03 +00:00
0d5f2cb1bb
feat(ha-config-bootstrap): implement EPOLLRDHUP failover and heartbeat timeout vtask (task 9.4)
2026-05-29 07:17:55 +00:00
9bbff7b016
claude skills
2026-05-29 15:00:06 +08:00
94bf5d94b8
feat(ha-config-bootstrap): implement OP_ctrlHello state sync handler (task 9.3)
2026-05-29 05:22:17 +00:00
0ec0ffa7e3
feat(ha-config-bootstrap): implement xce_retry_config_t and xce_request_with_retry (tasks 10.1, 10.2)
2026-05-29 03:00:34 +00:00
bb8e531a12
test(ha-config-bootstrap): add RED-phase tests for xce_request_with_retry (task 10.1)
2026-05-29 02:45:24 +00:00
97a76617e6
feat(ha-config-bootstrap): implement ha_find_and_connect_to_primary three-tier discovery (task 9.2)
2026-05-28 15:09:08 +00:00
3252c89e7a
docs(ha-config-bootstrap): mark task 9.1 complete — apply_wal_entry already extracted
2026-05-28 14:53:52 +00:00
c0cfc1cf83
feat(ha-config-bootstrap): implement committed_config_tag and config quorum commit (task 8.1)
2026-05-28 14:52:29 +00:00
684d3b6608
feat(ha-config-bootstrap): wire repl_wait_majority_ack into persist_wal_sync_append (task 7.6)
2026-05-28 14:28:38 +00:00
85c8565957
feat(ha-config-bootstrap): implement persist_truncate_wal_above and committed_lsn (task 7.5)
2026-05-28 14:13:29 +00:00
e7da075315
test(ha-config-bootstrap): add RED-phase tests for persist_truncate_wal_above (task 7.4)
2026-05-28 14:00:54 +00:00
30bcb74a67
feat(ha-config-bootstrap): implement repl_wait_majority_ack with quorum formula and ack_op discrimination (task 7.3)
2026-05-28 13:57:24 +00:00
3969064e11
feat(ha-config-bootstrap): implement repl_broadcast eviction and pending_ack_count (task 7.2)
2026-05-28 13:44:11 +00:00
f6030749de
test(ha-config-bootstrap): add RED-phase tests for repl_wait_majority_ack and pending_ack_count (task 7.1)
2026-05-28 13:27:27 +00:00
7c27ff1954
feat(ha-config-bootstrap): implement ha_restore_term() for ha-term.bin read path (task 6.2)
2026-05-28 13:21:36 +00:00
722d7824c4
test(ha-config-bootstrap): RED-phase tests for ha-term.bin durability (task 6.1)
...
5 Unity tests covering persist (req 9.1), restore (req 9.2 RED),
missing-file zero-init (req 9.3), CRC-mismatch safe-zero, and
write+rename atomicity. Build fails with 3 undefined-reference linker
errors on ha_restore_term() — expected RED phase proof.
2026-05-28 10:11:56 +00:00
ab174c8b06
feat(ha-config-bootstrap): implement bootstrap_config_if_needed() (task 5.3)
...
- Probe all peers: any tag>0 -> defer_config_fetch=true; all-zero -> proceed;
none reachable -> exponential backoff 500ms->10s cap with WARN per attempt
- Wire into myapp.c: before ha_wait_for_heartbeat_or_timeout()
- Post-election: defer_config_fetch && CTRL_STANDBY -> fetch_config_from_primary()
- INFO log for all three bootstrap outcomes (Req 10.2)
- XCE_TESTING hook for probe mock; test_ha_bootstrap_support.c installs mock
- 9/9 bootstrap tests GREEN, 141/141 full suite GREEN
2026-05-28 09:48:24 +00:00
0c4a0760d1
feat(ha-config-bootstrap): implement xce_probe_config_tag() (task 5.2)
...
- Non-blocking TCP connect + poll(500ms) + capnp ProbeConfigTagRequest/Reply
- Returns 0 with *tag_out on success; -ECONNREFUSED/-ETIMEDOUT on failure
- INFO log per probe outcome (Req 10.2)
- bootstrap_config_if_needed() minimal linkage stub (task 5.3 will complete)
- Dispatch gate already exempts OP_probeConfigTag in CTRL_INIT/CTRL_ELECTING
- Probe test GREEN; 1 expected task-5.3 failure remains
2026-05-28 09:03:09 +00:00