Anton Vinogradov created IGNITE-28901:
-----------------------------------------
Summary: Revise GridEventStorageMessage filters (un)marshalling
Key: IGNITE-28901
URL: https://issues.apache.org/jira/browse/IGNITE-28901
Project: Ignite
Issue Type: Task
Reporter: Anton Vinogradov
GridEventStorageMessage carries the remote event filter as a manual byte[] blob
(filterBytes/filter) with a hand-written deferred unmarshal step:
finishUnmarshalFilters(marsh, filterClsLdr) is invoked by
GridEventStorageManager at processing time, once the peer-deployment class
loader for the filter is resolved.
This is the only (un)marshalling in core left outside the generated-marshaller
flow (IGNITE-28520): the generated unmarshal runs at receive time with the
configuration/peer loader available then, while the filter must be deserialized
later with a loader resolved per-filter from deployment info, so @Marshalled
cannot express it.
Options to explore:
* a deferred flavour of @Marshalled: the companion stays serialized at receive;
a generated unmarshalDeferred(ClassLoader) restores it on demand;
* or keep the manual step but align its naming/shape with the marshal/unmarshal
hook family and document why it is manual.
Follow-up of IGNITE-28520.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)