chore(buglog): bug-1754 fixed (6876e4f6); log snapshot exit_info gap

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-09-26 03:33:15 +00:00
parent 6876e4f6f2
commit e3f5a813c6
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C

View file

@ -24850,9 +24850,9 @@
},
{
"id": "bug-1754",
"status": "open",
"status_updated": "2026-09-24",
"status_note": "failed job exit code never persisted: apply_job_fail_transition never sets exit_info (job.c)",
"status": "fixed",
"status_updated": "2026-09-26",
"status_note": "6876e4f6: WAL_JOB_FAIL carries an int32 code trailer; both apply seams adopt it into exit_info (non-POST_EXEC stages). Also fixed apply_wal_entry assigning wire state 0 for STAGE_FLAG FAIL entries.",
"timestamp": "2026-09-01T13:00:00Z",
"error_message": "Discovered while building worker-rejoin-resync task 7.1's full round-trip integration test (test_full_rejoin_reconciliation_round_trip, test_worker_resync.c): a worker-reported exit code for a finished-FAILURE outcome is never durably recorded by ANY existing path in this codebase, reconciliation or ordinary. record_job_fail_fact()'s WAL_JOB_FAIL payload (job.c, persist_submit_job_fact_ex(..., WAL_JOB_FAIL, jobid, 0, WAL_JOB_FAIL_STAGE_FLAG|stage)) carries no exit-code slot at all, and apply_job_fail_transition() (job.c:2831-2853) never touches job.job.exit_info for the FAIL path -- it stays NULL unconditionally for every job failure. The new round-trip test asserts this honestly (TEST_ASSERT_NULL on job.job.exit_info with an inline comment) rather than encoding a wrong 'correct' expectation.",
"file": "src/controller/job.c",
@ -28038,6 +28038,30 @@
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-09-25T15:42:02Z"
},
{
"id": "bug-1867",
"status": "open",
"status_updated": "2026-09-26",
"status_note": "found while fixing bug-1754; needs a Job.exitCode capnp field + encode/decode, snapshot round-trip test",
"timestamp": "2026-09-26T03:33:15Z",
"error_message": "Controller job snapshot/checkpoint drops job.exit_info: the capnp Job struct (controller.capnp) has no exit-info field, so capnp_encode_job() never writes it and a job restored from a snapshot (rather than WAL replay) has exit_info NULL for both DONE/EXIT (FINISH) and failed (FAIL) jobs",
"file": "src/schema/controller.capnp",
"root_cause": "struct Job in src/schema/controller.capnp has finishtime/runtime/pidinfo/pendreason but no exit code; xce_job_t.exit_info (job_exitinfo_t*) has no capnp mapping. bug-1689 and bug-1754 made WAL_JOB_FINISH/WAL_JOB_FAIL carry the exit code, but anything restored from a checkpoint/entity snapshot after WAL truncation loses it (persistence.md field-completeness).",
"fix": "",
"tags": [
"persistence",
"snapshot",
"exit_info",
"field-completeness",
"controller"
],
"related_bugs": [
"bug-1689",
"bug-1754"
],
"occurrences": 1,
"last_seen": "2026-09-26T03:33:15Z"
}
]
}