unbridled-41 opened a new pull request, #5956:
URL: https://github.com/apache/rocketmq-dashboard/pull/5956

   ### Which Issue(s) This PR Fixes
   
   Fixes #5955
   
   ### Problem / Evidence
   
   The Trace tab reads a per-message cache; the manual lookup writes only the 
panel state:
   
   ```ts
   // runTraceQuery (before)
   const result = await getMessageTrace(value, ...);
   setTraceData(result);
   setTraceError(null);
   ```
   
   ```
   MessagePageAsyncState: keeps a manually refreshed trace when the tab is 
re-entered
   TestingLibraryElementError: Unable to find an element with the text: 
refreshed-trace description
   ```
   
   So the next tab entry re-serves the cached snapshot the query just 
superseded, taking the diagnostics (delivery status, failed-group count, 
recommendations) back with it.
   
   ### Root cause / Fix
   
   Two writers for one UI slot, and only one of them updates the cache the tab 
entry reads. Publish the manual msgid result into the same cache entry, keyed 
exactly as `loadMessageTrace` builds it.
   
   ### Priority and scoring
   
   **PRIORITY 45** — impact 16/40 (an explicit user action silently reverted; 
the operator reasons on a stale payload), blast radius 8/20 (the trace tab, 
whenever a refresh is followed by a tab switch), reproducibility 18/20 
(deterministic, pinned by the new test), maintenance value 3/20.
   
   **FIX_CONFIDENCE 75** — the key construction is shared; the only new logic 
is the write-back.
   
   ### Tests
   
   `cd web && npx vitest run 
src/pages/instance/__tests__/MessagePageAsyncState.test.tsx` -> `Tests 23 
passed`.
   
   | Test | Before | After |
   |---|---|---|
   | `keeps a manually refreshed trace when the tab is re-entered` | FAIL (the 
older snapshot returned) | PASS |
   | `loads a message trace lazily and reuses it for the same message` | PASS | 
PASS |
   
   `npx eslint` reports no errors; `npx tsc -b` passes.
   
   ### Risk
   
   The cache now holds the manual result too, which is what the tab wanted to 
show; the cache's own invalidation (key change, failed request) is untouched.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to