diff --git a/.wolf/buglog.json b/.wolf/buglog.json index 93ac0394..c600a14e 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -17729,6 +17729,29 @@ ], "occurrences": 8, "last_seen": "2026-08-19T21:05:00Z" + }, + { + "id": "bug-1601", + "timestamp": "2026-08-20T07:26:00Z", + "error_message": "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.", + "file": "src/scheduler/src/repl_info.c", + "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.", + "tags": [ + "scheduler", + "repl", + "info-resource", + "info-worker", + "consumable", + "display", + "feature" + ], + "related_bugs": [ + "bug-1590", + "bug-1593" + ], + "occurrences": 1, + "last_seen": "2026-08-20T07:26:00Z" } ] }