anton-vinogradov opened a new pull request, #13428: URL: https://github.com/apache/ignite/pull/13428
[IGNITE-28901](https://issues.apache.org/jira/browse/IGNITE-28901) The event filter was the last hand-written marshalling in core outside the generated flow. It becomes a normal `@Marshalled` field, and `GridEventStorageMessage` becomes a `DeferredUnmarshalMessage`, so the consumer decides when to unmarshal. Gone: `marshal`, `unmarshal` and `finishUnmarshalFilters` on the message, the `MarshallableMessage` interface, and the now unused `marsh` field of the manager. `GridJobExecuteRequest` already works this way after IGNITE-28356. ### The wire form does not change `filterBytes` stays `@Order(1) byte[]`, and the marshaller is the same on both sides: the message is registered with `withSchema`, and the manager field that used to unmarshal the filter was `ctx.marshaller()`. Only the moment of unmarshalling moves. ### Order on the receiving side The request handler now unmarshals in two steps, and the order matters: 1. the response topic, right away. A failure to resolve the deployment still has to be answered, and the answer goes to that topic. It is a `GridTopic` tuple, so without unmarshalling it is `null` and the response would go nowhere; 2. the rest of the message, after the deployment is resolved, with the same class loader the old code passed to `finishUnmarshalFilters`. `DataStreamProcessor` splits it the same way, for the same reason. The response side has no deployment to wait for, so its listener unmarshals the message as soon as it arrives. When that fails the error is published through `err`, so the waiting query wakes up instead of hanging. ### Checks * `GridP2PTimeoutSelfTest` - 8 of 8. This is the one that matters: it runs a `remoteQuery` with a filter loaded by an external class loader, so the filter really travels and really needs the deployment class loader on the other side; * `GridP2PMissedResourceCacheSizeSelfTest` - 8 of 8; * `GridEventStorageSelfTest` - 6 of 6; * `GridEventStorageDefaultExceptionTest` - 2 of 2; * `IgniteCoreMessagesSerializationTest` - green; * checkstyle with `-Pcheckstyle` - no violations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
