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]

Reply via email to