--- id: "bug-1625" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "scheduler" severity: "unknown" timestamp: "2026-08-23T05:20:00Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 2 files: ["src/scheduler/src/handler.c"] tags: ["scheduler", "controller", "dispatch-failure", "notify", "unhandled-event", "resource-leak"] related: ["bug-1624"] fix_commits: ["281a026d"] legacy: true --- # bug-1625: None yet observed at runtime -- found via code trace while designing scheduler-dispatch-commit ## Description None yet observed at runtime -- found via code trace while designing scheduler-dispatch-commit. Referenced throughout that spec's requirements.md/research.md/design.md by this id; being logged now after noticing it was never actually appended to buglog.json. ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause The controller already reports dispatch-RPC failure back to the scheduler via NotifyData_data_jobDispatchFail (notify_dispatch(), src/controller/job.c:1108-1125), but sched_handle_notify()'s switch (handler.c:499-544) has no case for it -- it falls to default: rc = -EINVAL. A dispatch failure is therefore silently dropped by the scheduler: job->accounts/job->allocs (set synchronously at dispatch-decision-commit time by sched_commit_decision()) are never released, leaving stale committed-resource bookkeeping behind indefinitely. ## Fix FIXED (2026-08-23, scheduler-dispatch-commit task 2.2, commit 281a026d). Added case NotifyData_data_jobDispatchFail to sched_handle_notify()'s switch (handler.c), applying JOB_STAT_PEND via the existing XCE_SCHED_OP_JSTATE_CHANGE enqueue path -- exactly as designed. No new cleanup code needed: core_events.c's existing free-on-non-RUN branch releases job->accounts/job->allocs automatically once the enqueued PEND change is applied. Regression-tested: test_handle_notify_job_dispatch_fail_enqueues_pend (src/scheduler/testsuite/test_handlers.c) proves the notify enqueues the correct op; independently reviewed and approved. ## Verification _Not recorded (migrated from buglog.json)._ ## References - Related: bug-1624