myxce/src/scheduler
Rongsong Shen d438742f1a fix: staging_merge_complete bootstrap deadlock and missing recompact_node_ids
Two correctness fixes found during final Phase 6 code review:

F1 (CRITICAL): GC permanently disabled — staging_merge_complete bootstrapping deadlock.
sched_begin_session reset staging_merge_complete to 0 but never set it back to 1,
so sched_end_session's guard (!staging_merge_complete) always fired, preventing GC
from ever running. select-node memory leaked indefinitely across scheduling sessions.
Fix: set staging_merge_complete=1 at the end of sched_begin_session after all
staging work (sched_account_jobs etc.) completes.

F2 (HIGH): recompact_node_ids() omitted from GC protocol in sched_end_session.
The protocol in resreq.h requires gc_sweep → recompact_node_ids. Without
recompaction, sel_node_next_id grows monotonically across sessions and
select_eval_ctx_t arrays (sized by max node_id) grow without bound.
Fix: call recompact_node_ids() after gc_sweep_select_nodes.

Also adds test_staging_merge_complete_gc_guard to document the bootstrap
invariant: sched_begin_session must leave staging_merge_complete=1 so the
GC guard in sched_end_session does not fire.
2026-04-30 06:48:01 +00:00
..
include feat: add _Atomic gc-predicate fields to xce_scheduler_t (phase 6 task 6-3) 2026-04-30 04:03:51 +00:00
src fix: staging_merge_complete bootstrap deadlock and missing recompact_node_ids 2026-04-30 06:48:01 +00:00
testsuite fix: staging_merge_complete bootstrap deadlock and missing recompact_node_ids 2026-04-30 06:48:01 +00:00
CLAUDE.md Merge Go frontend (apiserver + xcecli) into meson build 2026-04-14 11:23:18 +08:00
meson.build improve xkvmgr and testsuite for scheduler 2026-02-26 14:39:12 +08:00