myxce/src
Rongsong Shen 977607615f
fix(controller): WAL_JOB_CKPT loses job.ckptinfo on replay (bug-1691)
Same class as bug-1678/1687/1689/1690: on_job_ckpt() sets job.ckptinfo
(a plain char*, xstring-backed via makeString()) but is purely hook-driven
-- persist_job_hook_fun's default: arm only ever captured {jobid, state}
for WAL_JOB_CKPT. Neither apply seam restored ckptinfo after a restart.

Simplest of the five field-parity fixes: ckptinfo is a bare string, so no
capnp struct is needed -- mirrors WAL_QUEUE_CTRL's existing NUL-terminated-
string-after-header wire shape instead. Adoption is unconditional (not
gated on a state transition), matching bug-1690's precedent: a checkpoint
report never changes job.state. restore_job_ckpt_state() releases the
prior value via dereference() (the correct RTTI verb for an xstring), not
free().

Found by an /xce-audit-invariants controller pass (field-complete apply
parity dimension) -- the last of five sibling gaps found together
(bug-1678, bug-1687, bug-1689, bug-1690, this one). 7 new tests in
test_wal_job_ckpt_fact.c; RED/GREEN independently verified (5 genuine
pre-fix failures, 2 backward-compat tests correctly passed unchanged).
Full controller suite: 1167 tests, 2 failures -- both the pre-existing,
unrelated bug-1561 overlayfs sandbox flake. No ASAN findings.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgYRU3zDTqNGV5Jk8aiKLg
2026-08-25 12:29:10 +00:00
..
autoscaler support shared libxce(for api server) 2026-01-19 11:02:49 +08:00
configs fix(controller): close 6 data-safety races + apply-pump O(N^2) regression + boot TOCTOU 2026-08-16 10:20:02 +00:00
controller fix(controller): WAL_JOB_CKPT loses job.ckptinfo on replay (bug-1691) 2026-08-25 12:29:10 +00:00
docs update documents 2026-08-10 17:51:51 +08:00
frontend fix(apiserver): FilterRows must not route non-bitmask operators through bitmask matching (bug-1680) 2026-08-25 04:04:08 +00:00
include fix(controller): WAL_JOB_CKPT loses job.ckptinfo on replay (bug-1691) 2026-08-25 12:29:10 +00:00
lib fix(lib): thread from_host through the wire format and the job-submit interning object (bug-1676, gitea #44) 2026-08-24 15:14:42 +00:00
nixSupport feat(dirty-content-fingerprint): Nix flake computes fingerprint via self.narHash 2026-08-21 04:57:56 +00:00
scheduler fix(scheduler): invalidate stale builtin_fcfs picker cursors across calls (bug-1686) 2026-08-25 08:49:43 +00:00
schema fix(controller): WAL_JOB_RUSAGE loses job.run_usage on replay (bug-1690) 2026-08-25 10:53:32 +00:00
tools test(dirty-content-fingerprint): add Nix production path fingerprint check 2026-08-21 11:12:15 +00:00
worker fix(worker): job ids print human-readable format via fmt_jobid() (bug-1588) 2026-08-22 02:42:01 +00:00
xceadmin feat(dirty-content-fingerprint): xceadmin shows fingerprint in --version 2026-08-21 09:20:27 +00:00
flake.lock fix librtti package leak issue 2026-07-27 15:31:50 +08:00
flake.nix feat(dirty-content-fingerprint): Nix flake computes fingerprint via self.narHash 2026-08-21 04:57:56 +00:00
meson.build feat(dirty-content-fingerprint): add dirty_fingerprint meson option and C define 2026-08-21 03:54:37 +00:00
meson.options feat(dirty-content-fingerprint): add dirty_fingerprint meson option and C define 2026-08-21 03:54:37 +00:00