[
https://issues.apache.org/jira/browse/IGNITE-28901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anton Vinogradov updated IGNITE-28901:
--------------------------------------
Epic Link: IGNITE-25881
> 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
> Priority: Major
> Fix For: 2.19
>
>
> 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)