myxce/src
Rongsong Shen e4bb492ae6
fix(controller): checkpoints keep a job's exit code (bug-1867)
The capnp Job struct -- the checkpoint/entity-snapshot form of xce_job_t --
had no exit-info field, so capnp_encode_job() never wrote job.exit_info
and a job restored from a snapshot (instead of WAL replay) came back with
exit_info NULL, for DONE/EXIT and failed jobs alike. bug-1689/bug-1754
made the WAL facts carry the code; anything older than the last
checkpoint's WAL trim still lost it.

- controller.capnp: struct JobExitInfo $C.mapname("job_exitinfo_t")
  { exitcode }, and Job.exitInfo @12 $C.mapname("exit_info"). The
  generator now emits encode/decode/free for it inside encode_Job /
  decode_Job / free_Job; restore_job()'s create_job() already takes
  exit_info via MOVE_PTR. Null stays null (no fabricated exit 0). A new
  ordinal, so older snapshots/recordings decode with exit_info NULL.

New test_snapent_checkpoint_exit_info_roundtrip (RED before): exit codes
0 and 137 and a NULL survive both the raw checkpoint frames and a real
persist_load_snapshot restore. Full /xce-build all (asan): 111 meson
suites, 0 failures; all Go packages pass.

Not live-verified: the --force-snapshot HA soak cannot reach its snapshot
step because of a pre-existing checkpoint-marker replication stall,
reproduced on the baseline without this change (bug-1870).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-26 09:55:23 +00:00
..
autoscaler remove extralib 2026-09-04 11:24:43 +08:00
configs feat(xceadmin): validate percent-based limit values are in [0.0, 1.0] (bug-1833) 2026-09-20 10:50:21 +00:00
controller fix(controller): checkpoints keep a job's exit code (bug-1867) 2026-09-26 09:55:23 +00:00
docs feat(eliminate-frontend-makefile): task 3.3 - update live documentation (11 files) 2026-09-03 14:22:54 +00:00
frontend fix(apiserver): fix job control union discriminant, add human-readable job ID support (gitea#45) 2026-09-07 08:31:54 +00:00
harness feat(controller-status): render per-controller connection status in ctrlstatus command (task 8.3) 2026-09-16 15:36:02 +00:00
include fix(controller): persist a failed job's finish_time through WAL_JOB_FAIL (bug-1747) 2026-09-26 09:33:55 +00:00
lib fix(scheduler): re-pushed resource definitions are not errors (bug-1854) 2026-09-25 15:09:49 +00:00
nixSupport remove extralib 2026-09-04 11:24:43 +08:00
scheduler fix(scheduler): re-pushed resource definitions are not errors (bug-1854) 2026-09-25 15:09:49 +00:00
schema fix(controller): checkpoints keep a job's exit code (bug-1867) 2026-09-26 09:55:23 +00:00
tools fix(xce-test-multihost): deploy with a fixture config set that clears limits (bug-1857) 2026-09-25 13:15:03 +00:00
worker fix(worker): xcecd's fixed /tmp files never follow planted links (bug-1869) 2026-09-26 08:13:24 +00:00
xceadmin feat(xceadmin): validate percent-based limit values are in [0.0, 1.0] (bug-1833) 2026-09-20 10:50:21 +00:00
flake.lock remove extralib 2026-09-04 11:24:43 +08:00
flake.nix remove extralib 2026-09-04 11:24:43 +08:00
meson.build feat(xce-harness-component): relocate xce_test into standalone harness component 2026-09-14 05:08:15 +00:00
meson.options feat(dirty-content-fingerprint): add dirty_fingerprint meson option and C define 2026-08-21 03:54:37 +00:00