fix(controller): job start_time/finish_time/run_time never set by apply-pump

apply_committed_entry()'s shared WAL_JOB_START/FINISH/STOP/RESUME/RUSAGE/
CKPT/PREASON dispatch case only ever called the generic, state-only
apply_job_update_transition(j, state) -- start_time/finish_time/run_time
were never touched, so `xcecli joblist` always showed StartTime=0 for
RUN/DONE/EXIT jobs and FinishTime=0 for DONE jobs (EXIT jobs got a
finish_time only via the separate, richer WAL_JOB_FAIL dispatch path).

Fix is additive: stamp time(NULL) keyed on wal_type right after
apply_job_update_transition() succeeds, still under the same
lock(j, RTTI_LOCK_WRITE) -- WAL_JOB_START sets start_time, WAL_JOB_FINISH
sets finish_time and derives run_time. No change to
apply_job_update_transition()'s signature or the dispatch structure.

Add test_ace_job_start_sets_start_time and
test_ace_job_finish_sets_finish_time_and_run_time to
test_apply_committed_entry.c, following the existing tace_seed_job
fixture pattern.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-08-20 04:24:44 +00:00
parent 008553e982
commit 5147396d0e
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2
4 changed files with 90 additions and 1 deletions

View file

@ -2509,3 +2509,14 @@
| 21:01 | Edited src/lib/group.c | FREEUP() → dereference() | ~24 |
| 21:02 | Session end: 2 writes across 2 files (test_group.c, group.c) | 19 reads | ~25269 tok |
| 21:06 | Fixed production heap-corruption crash: makeGroup() FREEUP() vs dereference() allocator mismatch | src/lib/group.c, src/lib/testsuite/test_group.c | RED->GREEN confirmed via ASAN, logged bug-1600 | ~15000 |
| 04:05 | Verified: nix develop ./src -- xce-build.sh lib asan (clean build, exit 0) | src/lib/group.c fix | 301 Tests 0 Failures 0 Ignored; test_reconfigure_same_group_members PASS, no ASAN aborts | ~12000 |
| 21:07 | Edited src/controller/testsuite/test_apply_committed_entry.c | 4→5 lines | ~26 |
| 21:08 | Edited src/controller/testsuite/test_apply_committed_entry.c | modified test_ace_job_start_sets_start_time() | ~540 |
| 21:08 | Edited src/controller/testsuite/test_apply_committed_entry.c | 2→4 lines | ~67 |
| 21:09 | Edited src/controller/testsuite/test_apply_committed_entry.c | 18→17 lines | ~194 |
| 21:09 | Edited src/controller/testsuite/test_apply_committed_entry.c | TEST_ASSERT_EQUAL_UINT64_MESSAGE() → TEST_ASSERT_EQUAL_INT_MESSAGE() | ~125 |
| 21:09 | Edited src/controller/persist.c | added 3 condition(s) | ~312 |
| 21:09 | Edited src/controller/persist.c | 6→8 lines | ~155 |
| 21:10 | Session end: 9 writes across 4 files (test_group.c, group.c, test_apply_committed_entry.c, persist.c) | 23 reads | ~127583 tok |
| 21:11 | Session end: 9 writes across 4 files (test_group.c, group.c, test_apply_committed_entry.c, persist.c) | 23 reads | ~127583 tok |
| 21:12 | Fixed StartTime/FinishTime never set (raft-apply-decoupling apply-pump gap) — wal_type-keyed time(NULL) stamping in apply_committed_entry, TDD RED->GREEN, bug-1561 re-observed (6th time, unrelated overlayfs artifact, not a regression) | src/controller/persist.c, src/controller/testsuite/test_apply_committed_entry.c, .wolf/buglog.json | GREEN, 1107 Tests 2 pre-existing-unrelated Failures | ~35000 |