myxce/src/controller
Rongsong Shen b490c419ca feat: P3-6 ha_trigger_manual_failover_for_test() shim + 3 failover cycle tests
Add test-only function ha_trigger_manual_failover_for_test() to exercise manual
failover state machine (demote → promote cycle) without requiring live cluster_t.

Test coverage:
- test_manual_failover_transitions_role_and_increments_term: Validates role
  transitions (PRIMARY → STANDBY → PRIMARY) and term monotonicity
- test_manual_failover_resets_hooks_registered: Confirms demotion resets the
  hooks_registered idempotency guard
- test_manual_failover_monotonic_term_across_multiple_cycles: Validates term
  remains monotonically increasing across 5 consecutive failover cycles

Implementation:
- Exposed only under #ifdef XCE_TESTING in ha.h
- Function body (6 lines): calls ha_do_demote() then ha_do_promote(); returns
  the new term value via atomic_load_explicit()
- Enables design validation (P3-6) without test-cluster infrastructure

All tests pass. Build clean.
2026-05-07 23:55:00 +00:00
..
include feat: implement persist_recover with snapshot load and WAL replay (P0-4) 2026-05-07 11:41:33 +00:00
testsuite feat: P3-6 ha_trigger_manual_failover_for_test() shim + 3 failover cycle tests 2026-05-07 23:55:00 +00:00
apiserver.c fix typo caused dead lock 2026-05-07 09:07:36 +00:00
CLAUDE.md Merge Go frontend (apiserver + xcecli) into meson build 2026-04-14 11:23:18 +08:00
cluster.c feat: wire ha_state_t into cluster_t + HA startup/shutdown lifecycle (P1-5) 2026-05-07 14:55:48 +00:00
dataex.c save works 2026-03-05 16:03:37 +08:00
ha.c feat: P3-6 ha_trigger_manual_failover_for_test() shim + 3 failover cycle tests 2026-05-07 23:55:00 +00:00
ha.h feat: P3-6 ha_trigger_manual_failover_for_test() shim + 3 failover cycle tests 2026-05-07 23:55:00 +00:00
job.c feat: JOB_STAT_TRANSIENT, job_should_retain, worker_should_retain, dead_since (P0-5a, P0-8, P0-13) 2026-05-07 12:52:07 +00:00
join.c feat: ha_should_redirect + join.c HA redirect/nomaster guard (P1-6) 2026-05-07 15:11:53 +00:00
main.c feat: wire persist_init/recover/start/stop into cluster lifecycle (P0-F) 2026-05-07 13:07:47 +00:00
meson.build feat: P3-6 ha_trigger_manual_failover_for_test() shim + 3 failover cycle tests 2026-05-07 23:55:00 +00:00
misc.c save works 2026-03-05 16:03:37 +08:00
myapp.c reformat code and job array 2025-11-07 16:14:27 +08:00
myconf.c save works 2026-03-03 16:49:26 +08:00
opget.c save works 2026-03-04 18:18:53 +08:00
opupd.c save works 2026-03-03 16:49:26 +08:00
persist.c feat: P2-4 wire repl_broadcast into persist_wal_async/sync_append; last_replicated_crc 2026-05-07 17:54:48 +00:00
queue.c save works 2026-03-04 18:18:53 +08:00
repl.c feat: P2-5 repl_start/complete_catchup, repl_needs_snapshot — standby catch-up state 2026-05-07 18:14:12 +00:00
reply.c save works 2026-03-03 16:49:26 +08:00
resources.c update controller code 2025-11-05 16:58:57 +08:00
sched.c save works 2026-03-04 18:18:53 +08:00
task.c save works 2026-03-04 18:18:53 +08:00
worker.c feat: JOB_STAT_TRANSIENT, job_should_retain, worker_should_retain, dead_since (P0-5a, P0-8, P0-13) 2026-05-07 12:52:07 +00:00