--- id: "bug-1601" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "scheduler" severity: "unknown" timestamp: "2026-08-20T07:26:00Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: ["src/scheduler/src/repl_info.c"] tags: ["scheduler", "repl", "info-resource", "info-worker", "consumable", "display", "feature"] related: ["bug-1590", "bug-1593"] legacy: true --- # bug-1601: User request: info resource/info worker did not distinguish consumable from non-consumable… ## Description User request: info resource/info worker did not distinguish consumable from non-consumable resources -- repl_info_worker_one() showed a fabricated total=/available= pair for EVERY numeric per-worker resource regardless of XCE_RESF_CONSUMABLE, and repl_info_resource_one() never reported a used/in-use amount for a CONSUMABLE GLOBAL/SHARED resource at all; the resource definition line was also missing ordtype. ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause repl_info_worker_one() unconditionally computed/printed total=avail+inUse available=avail for any Value_u_fvalue resval, never checking XCE_RESF_CONSUMABLE -- a non-consumable numeric attribute (nothing ever allocates against it) got a misleading total/available split instead of a single current value. repl_info_resource_one() (the GLOBAL/SHARED case) only ever read core->sharedInst (the available pool) and never core->sharedInUse (the parallel in-use pool that already exists and is populated by the real resource-accounting code, resource.c), so a CONSUMABLE cluster-wide resource never showed how much was in use. The definition line also omitted xce_resource_t.ordtype (INCR/DECR/NA). ## Fix repl_info_resource_one(): added ordtype= to the definition line; for a GLOBAL/SHARED resource additionally flagged XCE_RESF_CONSUMABLE, the numeric value line now also reports used= (read from core->sharedInUse at the same idx) alongside value= (avail+used); non-consumable stays a single value= line. repl_info_worker_one(): the per-resource numeric line now looks up the matching xce_resource_t (by idx) from the already-built res_arr and gates the value/used split on XCE_RESF_CONSUMABLE -- consumable prints value=avail+used used=inUse (renamed from the old total=/available= labels for consistency with the resource-level display), non-consumable prints a single value=avail line. Added test_info_resource_reports_consumable_value_and_used and test_info_worker_reports_consumable_value_and_used (new, seed core->sharedInUse / worker->resInUse directly via dup_val()+zarray_put, mirroring the allocation pattern the real accounting code and core_events.c already use); updated 3 pre-existing tests whose asserted strings changed shape (test_info_worker_reports_resource_values, test_info_resource_reports_string_value, test_info_resource_named_lookup_reports_host_based_note). Full scheduler suite: 42/43 Ok, only the pre-existing unrelated bug-1560 failure remains. ## Verification _Not recorded (migrated from buglog.json)._ ## References - Related: bug-1590, bug-1593