feat(resreq-maxtasks-wiring): add task-count derivation helper
Adds apply_job_task_count() to overwrite a standalone primary resreq's minTasks/maxTasks with a job's real requested task count, no-op for COMPOUND/ALTER nested primaries, with a defensive min>max clamp. Closes the gap that lets scheduler-allocation's multi-host allocator ever be reached (bug-1770). Wiring at live ingest call sites follows in subsequent tasks. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XYdtrEWWZfKRRGED7raEYg
This commit is contained in:
parent
ecfb0a3c64
commit
799a71ecb1
10 changed files with 918 additions and 0 deletions
|
|
@ -316,4 +316,16 @@ extern int calc_wanted_global_resvals(xvec_idval_t*, var, xlist_t*,
|
|||
extern int calc_wanted_host_resvals(xvec_idval_t*, var, xlist_t*,
|
||||
rusage_per_type_t, int, int);
|
||||
|
||||
/*
|
||||
* Overwrite minTasks/maxTasks on resreq's own top-level primary with the
|
||||
* job's real requested task count. No-op if resreq is NULL or if its
|
||||
* top-level tag is not XCE_RESREQ_PRIMARY -- a COMPOUND or ALTER resreq's
|
||||
* nested primaries are left exactly as parse_resreq_primary() set them.
|
||||
* If mintasks > maxtasks, maxtasks is defensively raised to mintasks
|
||||
* before assignment (mirrors the apiserver's own convert.go clamp
|
||||
* direction). Idempotent; never allocates memory.
|
||||
*/
|
||||
extern void apply_job_task_count(xce_resreq_t* resreq, uint32_t mintasks,
|
||||
uint32_t maxtasks);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue