limit audit: correct PEND reason semantics + percent-map + project normalization
Limit-subsystem audit fixes (#1, #2, #4b, #5, #7; #3/#6/#8 deferred): #1 PEND reason semantics inversion (the real fix): - plugins/limit.c: remove the bogus rc<=0 PREASON_LIMIT_GLOBAL/HOST attach blocks from match_job_global_limit_()/match_job_host_limit_(). match_limit() only knows scope membership (1 = in scope, 0 = not), never usage-vs-cap -- the attach fired "quota exhausted" for every job OUTSIDE the limit's scope and never for a real exhaustion. - resource.c sched_try_alloc_on_host_() + alloc_runner.c sched_alloc_prepare_shared_(): attach the real verdict in the generic satisfy check's unmet loops -- an unmet resource with XCE_RESF_LIMIT now reports PREASON_LIMIT_HOST (per-host loop, host named) / PREASON_LIMIT_GLOBAL (shared loop, host-less) instead of the generic NO_RESOURCE; the vres name ("limit=<name>[/u=..][/q=..][/p=..]") rides in the reason's resource field, reverse-parseable to the bare limit name. #2: rtr_reason_name() now covers codes 4-9 (aligned with pendReasonName() in the apiserver and reasonScenario() in the MCP server); preason.h's main-reason comment states the real producer contract. #4b: make_sched_obj() normalizes obj->project ""/NULL -> "default", matching sched_get_project()'s default -- a limit scoped to projects.members:[default] now matches obj->project the same as job->project (the wire decodes an absent project as "", not NULL). #5: percent_capacity_resource_map: "swap" -> "swp" (the live load index name workers register; "swap" matched no live resource, so a percent limit on it fell back to the live-value base bug-1834 exists to avoid) + add tmp -> maxtmp. Fixture and lib tests follow the live names. #7 (coverage): test_alloc_runner.c asserts an unmet shared limit vres gets PREASON_LIMIT_GLOBAL; test_alloc_runner_search.c asserts an unmet per-host limit vres gets PREASON_LIMIT_HOST with the host named; test_repl_trace_e2e.c / test_trace_render.c and the repl_trace_baseline fixtures (XCE_REPL_BASELINE_REGEN=1) follow the corrected reason rendering. Full tree: 134/134 tests green (scheduler 100, libxce, harness, controller, worker, autoscaler, apiserver). Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
parent
993daa8f95
commit
c194973d42
17 changed files with 295 additions and 64 deletions
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue