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]
