Asset-request logging for the viewer's asset cap (diagnostics, off by default)
What it is
With the environment variable PARACOSM_ASSET_INSTR=1 set for the OpenSim process, the region logs every asset
the viewer fetches through the GetAssets cap, at INFO level with the tag [GETASSET-INSTR]:
REQ type=... id=... range=...when a request arrives,MISS id=... type=... -> 404when the asset is not found,SERVE id=... storedType=... reqType=... len=... ctype=... status=...when it is sent,- and one
asset poll-cap registered uri=... agent=...line per viewer as the cap is set up.
Unset (the default) it logs nothing and changes no behaviour: every added line is behind the flag. The only other
change is that one commented-out upstream log line (// m_log.Warn("[GETASSET]: not found: ...) is replaced by the MISS line.
Why it is kept (recorded 2026-09-27; written 2026-09-23)
It is how the "texture renders flat grey" bug was solved: the log proved the viewer had requested and received the complete, valid texture (REQ, then SERVE 206 for the whole file), which moved the search from delivery to the viewer's JPEG 2000 decoder (the MCT=1 codestream; PLAN.md 2026-09-23, handbook/verification.md #4). It is the fastest server-side answer to "did the viewer ask for this asset, and did it get it?", costs nothing when off, and the reference server's DLLs have always carried it. So it is recorded as a patch rather than dropped.
The change (../asset-instr.diff, a unified diff against 0.9.3.0)
OpenSim/Capabilities/Handlers/GetAssets/GetAssetsHandler.cs: the flag and the REQ / MISS / SERVE lines. Built asOpenSim.Capabilities.Handlers.dll.OpenSim/Region/ClientStack/Linden/Caps/GetAssetsModule.cs: the cap-registered line. Built asOpenSim.Region.ClientStack.LindenCaps.dll.
Use
Start OpenSim with PARACOSM_ASSET_INSTR=1 in its environment and grep OpenSim.log for GETASSET-INSTR. It is
noisy (a line per request): turn it off again when done.