Aias00 opened a new issue, #7716:
URL: https://github.com/apache/shenyu/issues/7716

   ## Current behavior
   The WebSocket client places `SystemInfoUtils.getSystemInfo()` (an already 
serialized JSON string) inside its report. Admin extracts that string and 
serializes it again for `instanceInfo`. HTTP long polling likewise reads JSON 
from a header and calls `toJson` on the string. Independent heartbeat reports 
carry the original JSON string directly.
   
   Consequently the `instanceInfo` field has incompatible encodings across 
reporting channels. Parsing it once yields a string on the sync paths and an 
object on the direct path; the dashboard's one-pass JSON formatting displays 
escaped JSON rather than consistent structured information.
   
   ## Evidence
   - [WebSocket report 
producer](https://github.com/apache/shenyu/blob/66d7d954ca37d651a5ad916f988a8081157a7ab4/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/client/ShenyuWebsocketClient.java#L424)
   - [WebSocket 
receiver](https://github.com/apache/shenyu/blob/66d7d954ca37d651a5ad916f988a8081157a7ab4/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketCollector.java#L196)
   - [HTTP 
receiver](https://github.com/apache/shenyu/blob/66d7d954ca37d651a5ad916f988a8081157a7ab4/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/http/HttpLongPollingDataChangedListener.java#L141)
   
   ## Acceptance criteria
   - [ ] Define one JSON encoding contract for the instance information field 
across all three reporting channels.
   - [ ] Normalize once at a shared boundary or fix the producers/receivers 
consistently; avoid heuristic decoding loops.
   - [ ] Define compatibility for already persisted double-encoded values and 
older reporters.
   - [ ] Test equivalent information through WebSocket, HTTP sync and 
independent heartbeat, including missing/malformed information and dashboard 
rendering.
   - [ ] Preserve liveness reporting if optional information is invalid; expose 
diagnostics without logging sensitive payloads.
   
   Related: #7692 concerns metadata refresh and #7696 concerns type identity; 
neither fixes encoding.
   
   Source-inspection finding; no runtime reproduction was run during issue 
preparation.
   


-- 
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