cloudbase-ai opened a new pull request, #7883:
URL: https://github.com/apache/shenyu/pull/7883

   Refs #7832. This is the first, opt-in WebSocket Discovery slice rather than 
a complete cross-channel protocol migration.
   
   Large Discovery messages currently carry persistence identifiers and update 
metadata that built-in gateway handlers do not read. Add a typed 
`DiscoverySyncPayload` at the Admin WebSocket publication boundary and the 
`shenyu.sync.websocket.compact-discovery-payload` option, disabled by default. 
Enabling it omits the outer handler ID and each upstream's row ID, update 
timestamp, handler ID and repeated namespace while retaining selector/namespace 
identity, warmup creation timestamp, routing fields and opaque props. Shared 
Admin events and source DTOs are not mutated.
   
   The existing envelope and gateway decoder remain in use. README and 
configuration comments document consumer auditing and rollback. HTTP polling, 
registry-backed synchronization, Admin cluster forwarding, selectors/rules, and 
capability negotiation are deferred. Leave the flag disabled for unaudited 
mixed fleets or external/WASM consumers that depend on omitted fields. The 
issue should remain open for those follow-ups.
   
   Validation:
   
   - Red regression: the opt-in constructor with legacy behavior produced 5 
failures in 24 listener tests; all five event types still carried the 
management fields.
   - `./mvnw -B -pl shenyu-admin -am verify -Djacoco.skip=true 
-Dmaven.javadoc.skip=true`: 2,861 tests, 0 failures/errors, 6 skipped; 
Checkstyle and RAT passed.
   - Final expanded targeted suite: 32 tests passed 
(`WebsocketDataChangedListenerTest,WebSocketSyncConfigurationTest,WebsocketSyncPropertiesTest`),
 including property binding/factory wiring, namespace separation, null/empty 
preservation and source immutability.
   - Standalone compatibility probe against existing 2.7.2-SNAPSHOT gateway 
libraries: divide cache population, warmup timestamp/props and empty-list 
cleanup passed.
   - Standalone size experiment using the implemented DTO, 10,000 synthetic 
upstreams with empty props: 2,793,460 UTF-8 JSON bytes before, 1,203,417 after. 
This is a fixture-specific size comparison, not an allocation/throughput or 
latency claim. Production benchmark and full deployed mixed-version testing 
remain outstanding.
   
   - [x] Tests back the change.
   - [ ] Full repository `./mvnw clean install -Dmaven.javadoc.skip=true` 
(module reactor validation above was run instead).
   


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