test(raft-ha-core-safety): client-probe soak primary-detection (task 1.5)

Release build block-buffers --logfile (flush on signal only), so log-grep
primary/convergence detection false-aborted. Replace all log-grep detection
with client probes (xce_test ctrlstatus): probe_primary/node_probe/
cluster_committed_converged. Both modes use shared helpers; 1.2 verdict
self-test 17/17 intact; bug-854 isolation preserved. Live release-binary
runs reach the verdict (chaotic re-confirms committed_divergence=3 / job
loss 0; sequential PASS). No production code touched. Phase 1 complete.
This commit is contained in:
Rongsong Shen 2026-06-27 10:12:50 +00:00
parent dc50924833
commit 07f08e58f5
3 changed files with 159 additions and 76 deletions

View file

@ -31,7 +31,7 @@
- _Requirements: 7.1, 7.4_
- _Boundary: Deterministic Chaotic Harness_
- [ ] 1.5 Make soak primary-detection robust to the release-build log buffer
- [x] 1.5 Make soak primary-detection robust to the release-build log buffer
- Task 1.3 found the release build block-buffers its `--logfile` and flushes only on signal, so the soak's log-grep primary/convergence detection cannot see an elected primary and false-aborts. Switch the soak's primary + convergence detection to a client probe (`ctrlstatus`/`xce_test`) instead of log-grep, so the chaotic soak runs unattended on release binaries. (Only if a client probe is insufficient, fall back to a controller release log-flush change that does not alter production logging semantics.)
- Observable completion: `run-ha-soak.sh --chaotic` on the `~/tmp` real-fs path with the `src/build.release` binaries detects the elected primary each round via the client probe and no longer false-aborts on "no primary within Ns"; a short (2-round) run reaches its verdict line
- _Requirements: 7.5, 8.3_