myxce/src/controller/testsuite
Rongsong Shen 910b43cd37
fix(controller): never close() the primary channel's raw fd (bug-1865)
handle_ctrlhello stored the netio endpoint's fd (primary_ctrl_fd = ep->fd)
and ha_on_primary_ctrl_fd_rdhup close()d it in three branches. netio owns
that socket and closes it on endpoint teardown, so by the time the
liveness poll fired the RDHUP the number could be reused -- in a chaotic
soak by the standby's WAL segment: HA's close() shut the WAL, fdatasync
failed 2305 times (EBADF, then EINVAL once a socket took the number),
durable_lsn stuck, and one round's jobsub failed EIO.

handle_ctrlhello now also holds a reference on the endpoint
(primary_ctrl_ep), which keeps its socket open and its fd number ours.
ha_drop_primary_ctrl_conn() replaces the raw closes: shutdown() the
still-owned socket so netio sees the hang-up and tears it down itself,
then release the reference. A bare fd with no endpoint is only forgotten.

Test test_rdhup_never_closes_an_fd_netio_already_released: real
ctrlhello -> netio teardown -> file opened on the freed number -> RDHUP;
the file was closed before, survives now. test_rdhup_closes_and_nulls_fd
updated to the new contract (peer reads EOF, fields cleared). Controller
suite 5/5.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 14:55:04 +00:00
..
clean_failover_preservation.sh fix: repoint stale controller/xce_test path references to harness/xce_test 2026-09-14 11:49:01 +00:00
controller_test.c fix(controller): stop a failed test from hanging the unit suite (bug-1429); mkstemp for upgrade temp file (bug-1861) 2026-09-25 13:15:03 +00:00
test_apply_committed_entry.c fix(bug-1731): fire HOOK_DETAIL_JOB_FAIL on WAL_JOB_FAIL apply 2026-08-29 12:13:01 +00:00
test_apply_correctness_verification.c fix(controller): close 6 data-safety races + apply-pump O(N^2) regression + boot TOCTOU 2026-08-16 10:20:02 +00:00
test_apply_pump.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_apply_pump_integration.c fix(controller): stop a failed test from hanging the unit suite (bug-1429); mkstemp for upgrade temp file (bug-1861) 2026-09-25 13:15:03 +00:00
test_apply_reapply_idempotency.c fix(bug-1731): fire HOOK_DETAIL_JOB_START/JOB_EXIT on WAL apply 2026-08-29 11:29:10 +00:00
test_apply_seam.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_bug857_regression.c feat(config-upgrade-snapshot): add bug-857 regression test, correct design.md (task 8.5) 2026-07-25 10:44:14 +00:00
test_cluster_persist.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_coldstart_lsn0.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_commit_admission_pool.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_commit_barrier_reply.c fix(bug-1735): job memory/CPU usage always read 0 in scheduler replay 2026-08-30 15:07:33 +00:00
test_commit_barrier_rollout.c fix(controller): stop a failed test from hanging the unit suite (bug-1429); mkstemp for upgrade temp file (bug-1861) 2026-09-25 13:15:03 +00:00
test_commit_durability.c fix(controller): stop a failed test from hanging the unit suite (bug-1429); mkstemp for upgrade temp file (bug-1861) 2026-09-25 13:15:03 +00:00
test_commit_engine.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_commit_resolve.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_config_repl.c fix(bug-1561): fix flaky test_conf_trim_keeps_only_n_versions/test_conf_get_saved_tag_no_config 2026-08-30 03:55:45 +00:00
test_convergence_verification.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_ctrl_metrics.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ctrlstatus.c fix(controller-status): ctrlstatus_fill must prefer a live registry slot over a stale disconnected one (task 8.6, bug-1819) 2026-09-16 17:53:13 +00:00
test_demotion_convergence.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_dispatch_commit.c fix(controller): job.start_time never set -- dispatch/WAL_JOB_START RUN-state collision (bug-1697) 2026-08-27 08:25:40 +00:00
test_dispatch_fail_retry.c feat(worker-rejoin-resync): fail-fast disconnected-worker dispatch (task 2.3) 2026-09-01 12:13:26 +00:00
test_dispatch_fail_terminal.c feat(scheduler-dispatch-commit): controller resolves terminal dispatch failures to EXIT (task 3.2) 2026-08-23 16:36:39 +00:00
test_drive_async_config.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_e2e_capnp.c fix(controller): CtrlHelloRequest.key Data field crashed HA leader election (bug-1835) 2026-09-21 03:51:48 +00:00
test_e2e_checkpoint.c fix(controller): close 6 data-safety races + apply-pump O(N^2) regression + boot TOCTOU 2026-08-16 10:20:02 +00:00
test_e2e_gc.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_e2e_hooks.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_e2e_wal.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_egress_filter.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_fetchfile_disconnect.c fix(controller): fail loud on scheduler/worker disconnect instead of relying on the reply-wait timeout (bug-1693) 2026-08-25 14:13:26 +00:00
test_gc_retention.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_bootstrap.c feat(eliminate-frontend-makefile): task 3.4 - update source code comments 2026-09-03 14:34:48 +00:00
test_ha_bootstrap_support.c 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
test_ha_cluster.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_connection_reuse.c fix(controller): never close() the primary channel's raw fd (bug-1865) 2026-09-25 14:55:04 +00:00
test_ha_core_safety.c test(raft-adapter-conformance): WAL catch-up reject reply-construction regression lock 2026-07-29 16:11:47 +00:00
test_ha_ctrlhello.c feat(eliminate-frontend-makefile): task 3.4 - update source code comments 2026-09-03 14:34:48 +00:00
test_ha_dispatch_integration.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_durability.c fix(controller): raft_cb_persist must deny vote and roll back state on persist failure (bug-1684) 2026-08-25 07:49:49 +00:00
test_ha_elect_ctx_lifecycle.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_election.c fix(controller): clamp committed_config_tag to own loaded config on promotion 2026-07-23 04:23:50 +00:00
test_ha_failover.c fix(controller): never close() the primary channel's raw fd (bug-1865) 2026-09-25 14:55:04 +00:00
test_ha_failover_prevote.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_heartbeat_committed.c feat(controller-status): carry election time on the heartbeat (task 7.3) 2026-09-16 06:03:03 +00:00
test_ha_liveness.c fix(controller): standby-endpoint err handler freed ep->data under a live vtask (bug-1839) 2026-09-22 03:21:14 +00:00
test_ha_partition.c feat(controller-status): carry election time on the heartbeat (task 7.3) 2026-09-16 06:03:03 +00:00
test_ha_prevote.c fix(ha): free liveness poll ctx on failed/skipped delaymgr schedule (bug-1483) 2026-08-02 04:36:37 +00:00
test_ha_rdhup_integration.c fix(ha): close standby election-freeze (bug-1562) + flusher retry storm (bug-1563) 2026-08-17 06:35:06 +00:00
test_ha_redirect.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_repl_push.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_role.c feat(controller-status): stamp election time on both promotion roads (task 7.2) 2026-09-16 04:54:25 +00:00
test_ha_role_lifecycle.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_ha_start_election_async.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_startup.c fix(controller): restored-but-stale raft term permanently blocked re-election after restart (bug-1695) 2026-08-25 16:11:37 +00:00
test_ha_vep_teardown.c fix(controller): standby-endpoint err handler freed ep->data under a live vtask (bug-1839) 2026-09-22 03:21:14 +00:00
test_ha_vote_floor_heartbeat.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_vote_gate.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_ha_vote_send.c test(raft-adapter-conformance): PreVote post-connect failure routing + fast-quorum coverage 2026-07-29 14:38:36 +00:00
test_hooks.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_host_runusage.c fix(bug-1736): capture memory_swap/tasks_current, compute peak_cpu_time 2026-08-30 15:32:02 +00:00
test_job_array_apiserver_push.c fix(schema): rename struct Data -> XceData to unshadow capnp builtin blob type 2026-07-22 09:22:04 +00:00
test_job_array_apply.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_job_array_fence.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_job_array_replay_fence.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_job_array_sched_push.c fix(controller): fail loud on scheduler/worker disconnect instead of relying on the reply-wait timeout (bug-1693) 2026-08-25 14:13:26 +00:00
test_job_dispatch.c feat(scheduler-dispatch-commit): add controller dispatch-failure classification (task 1.1) 2026-08-23 06:36:51 +00:00
test_job_dispatch_fail_count.c feat(scheduler-dispatch-commit): add dispatch-fail retry counter to job_t (task 1.3) 2026-08-23 07:44:22 +00:00
test_jobdispatch_no_double_notify.c test(scheduler-dispatch-commit): terminal dispatch failure e2e coverage (task 5.3) 2026-08-23 20:47:15 +00:00
test_jobstatereport_dispatch.c feat(worker-rejoin-resync): task 6.2 - route job-state report to reconciliation 2026-09-01 21:06:42 +00:00
test_join_redirect.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_p1_integration.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_p2_integration.c fix(bug-1429): persist_stop() before commit_engine_fini() in 21 fixtures 2026-08-30 16:04:43 +00:00
test_p3_hardening.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_p3_manual_failover.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_persist_checkpoint.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_persist_checkpoint_offload.c fix(controller): offload checkpoint_task_fn off the delaymgr thread (bug-1694) 2026-08-25 14:54:53 +00:00
test_persist_hooks.c fix(controller): close 6 data-safety races + apply-pump O(N^2) regression + boot TOCTOU 2026-08-16 10:20:02 +00:00
test_persist_recovery.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_persist_repl.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_persist_schema.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_persist_snapshot_entities.c feat(config-upgrade-snapshot): decode host/queue admin-state frames on checkpoint load 2026-07-24 14:08:12 +00:00
test_persist_truncate.c fix(controller): bug-1452 fix commit_engine_fini/persist_stop teardown race 2026-07-19 09:27:50 +00:00
test_persist_types.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_persist_wal.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_rcfile_integration.sh fix: repoint stale controller/xce_test path references to harness/xce_test 2026-09-14 11:49:01 +00:00
test_repl_apply.c fix(controller): job.start_time never set -- dispatch/WAL_JOB_START RUN-state collision (bug-1697) 2026-08-27 08:25:40 +00:00
test_repl_catchup.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_repl_majority.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_repl_unit.c fix(repl): harden standby slot allocation against WAL-retention guard clobber (bug-1474) 2026-07-26 04:11:27 +00:00
test_replay_apply_seam.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_sched_admin_dispatch.c fix(controller): standby dispatch-gate rejections now redirect to a known primary (bug-1700, bug-1701) 2026-08-27 08:25:55 +00:00
test_sched_worker_change.c fix(controller): fail loud on scheduler/worker disconnect instead of relying on the reply-wait timeout (bug-1693) 2026-08-25 14:13:26 +00:00
test_slowlane.c fix(controller-tests): make Unity test-file attribution and counters consistent suite-wide 2026-07-17 14:49:12 +00:00
test_term_adoption_vectors.c test(ha): add term-adoption regression tests for heartbeat/WAL-NACK vectors (bug-1484) 2026-08-02 04:36:46 +00:00
test_term_safety_adapter.c fix(ha): close standby election-freeze (bug-1562) + flusher retry storm (bug-1563) 2026-08-17 06:35:06 +00:00
test_upgrade_snapshot_apply.c test(config-upgrade-snapshot): fault-inject crash/restart + leadership change (task 8.7) 2026-07-25 18:20:43 +00:00
test_upgrade_snapshot_restore.c feat(config-upgrade-snapshot): restore host admin-state frame safely (create-if-missing) 2026-07-24 12:48:28 +00:00
test_wal_job_ckpt_fact.c fix(controller): WAL_JOB_CKPT loses job.ckptinfo on replay (bug-1691) 2026-08-25 12:29:10 +00:00
test_wal_job_dispatch_fact.c fix(controller): job.start_time never set -- dispatch/WAL_JOB_START RUN-state collision (bug-1697) 2026-08-27 08:25:40 +00:00
test_wal_job_finish_fact.c fix(bug-1731): fire HOOK_DETAIL_JOB_START/JOB_EXIT on WAL apply 2026-08-29 11:29:10 +00:00
test_wal_job_preason_fact.c fix(controller): WAL_JOB_PREASON loses job.pend_reasons on replay (bug-1692) 2026-08-25 13:14:28 +00:00
test_wal_job_rusage_fact.c fix(controller): WAL_JOB_RUSAGE loses job.run_usage on replay (bug-1690) 2026-08-25 10:53:32 +00:00
test_wal_job_start_fact.c fix(bug-1731): fire HOOK_DETAIL_JOB_START/JOB_EXIT on WAL apply 2026-08-29 11:29:10 +00:00
test_worker_join.c fix(controller): string resvals own their bytes -- rejoin use-after-free killed new primary (bug-1851) 2026-09-24 08:41:55 +00:00
test_worker_resync.c fix(controller): resync_resolve_round never told scheduler RECONCILING cleared (bug-1841) 2026-09-22 09:28:10 +00:00