chore(buglog): bug-1768 fixed (34c52ccb); log bug-1863
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b4e9a09925
commit
a6a0502d62
1 changed files with 23 additions and 3 deletions
|
|
@ -25237,9 +25237,9 @@
|
|||
},
|
||||
{
|
||||
"id": "bug-1768",
|
||||
"status": "open",
|
||||
"status_updated": "2026-09-24",
|
||||
"status_note": "nested COMPOUND/ALTER primaries skip slot/rusage checks (seqjob_allocator.c, parjob_allocator.c)",
|
||||
"status": "fixed",
|
||||
"status_updated": "2026-09-25",
|
||||
"status_note": "34c52ccb",
|
||||
"timestamp": "2026-09-04T00:00:00Z",
|
||||
"error_message": "OPEN, NOT A CRASH -- pre-existing, out-of-scope gap discovered during scheduler-allocation task 5.1's review (cache/dispatch wiring). seqjob_prepare_allocation() (src/scheduler/src/plugins/seqjob_allocator.c) and parjob_prepare_allocation() (src/scheduler/src/plugins/parjob_allocator.c) both silently `return 0` whenever `ctx->schedobj->tag != XCE_RESREQ_PRIMARY`. For a primary resource request nested inside a COMPOUND (or, transitively, an ALTER) job, `ctx->schedobj` remains the enclosing COMPOUND object for the entire per-primary allocation loop -- it is never swapped to a per-primary object -- so this guard fires for every nested primary and both prepare-allocation hooks no-op unconditionally.",
|
||||
"root_cause": "CONFIRMED via direct code read and `git log --follow -p`: the `ctx->schedobj->tag != XCE_RESREQ_PRIMARY` guard predates the entire scheduler-allocation feature (introduced in commit 12dcc2a6, months before this branch's base commit 5a670676); task 3.1's seqjob rewrap (b18c5f78) did not touch or introduce it. Effect: `ctx->alloc_req.host`/`ctx->alloc_req.shared` are never populated for a nested primary's resource want, so `sched_check_host_satisfy()` trivially passes against an empty want vector regardless of a candidate host's real free capacity. Only the SELECT expression (if the resreq specifies one) still gates candidate hosts for a nested primary -- slot count and rusage (memory, etc.) are unconditionally treated as satisfied. This means every COMPOUND job (and transitively every ALTER job, since ALTER delegates to COMPOUND dispatch) with a nested primary resource request has never had its real slots/rusage availability checked by the scheduler, since this guard was introduced.",
|
||||
|
|
@ -27951,6 +27951,26 @@
|
|||
"related_bugs": [],
|
||||
"occurrences": 1,
|
||||
"last_seen": "2026-09-24T15:24:57Z"
|
||||
},
|
||||
{
|
||||
"id": "bug-1863",
|
||||
"status": "open",
|
||||
"status_updated": "2026-09-25",
|
||||
"status_note": "multi-primary COMPOUND: each primary's alloc overwrites ctx->alloc; needs merge",
|
||||
"timestamp": "2026-09-25T13:07:56Z",
|
||||
"error_message": "A COMPOUND resreq with 2+ primaries (e.g. '1*{A} + 2*{B}') keeps only the LAST primary's allocation: seqjob/parjob my_alloc assign ctx->alloc = make_job_alloc(...) per primary, overwriting (and leaking) the previous primary's job alloc, while every primary's hosts were already debited into ctx->uncomitted -- the dispatched allocation omits earlier primaries' hosts and accounting diverges from the decision.",
|
||||
"file": "src/scheduler/src/scheduler.c,src/scheduler/src/plugins/seqjob_allocator.c,src/scheduler/src/plugins/parjob_allocator.c",
|
||||
"root_cause": "sched_make_compound_alloc_() (scheduler.c) loops primaries on one ctx; each allocator's success path replaces ctx->alloc instead of merging host allocs (and shared allocs) across primaries. Latent until bug-1768 (fixed 2026-09-25) because nested primaries previously requested nothing.",
|
||||
"fix": "",
|
||||
"tags": [
|
||||
"scheduler",
|
||||
"allocation",
|
||||
"compound",
|
||||
"accounting"
|
||||
],
|
||||
"related_bugs": [],
|
||||
"occurrences": 1,
|
||||
"last_seen": "2026-09-25T13:07:56Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue