forked from lei.chen/myxce
30-round chaotic soak reported committed_job_loss=1 at round 25, but the flagged job was confirmed present on every later verify and the final sweep -- a real loss never comes back. Root-caused from ctrl-1/ctrl-2/ctrl-3 logs, no controller change needed: a newly-elected primary cannot fold a prior-term entry into its own committed_lsn merely because it holds it durably (Raft Figure-8 safety via ha_arm_own_term_gate) -- it needs a fresh majority ack for its own-term WAL_NOOP first. That normally closes in <200ms, but chaotic mode's overlapping-restart design let it stretch to 6.232s this run (the peer whose ack was needed was itself mid-catch-up from its own recent restart). verify_classify ran its expect-job check immediately on primary detection with no settle/retry, unlike verify_no_loss (bug-1422) or wait_for_full_convergence, so it landed inside that window. Added a bounded retry (5 attempts, 2s settle) around the LOSS classification only, mirroring verify_no_loss's precedent -- a job still missing after that still counts as a genuine loss. Verified with a fresh 30-round chaotic re-soak: committed_divergence=0 committed_job_loss=0 result=PASS. |
||
|---|---|---|
| .. | ||
| rules | ||
| skills | ||
| settings.json | ||