[
https://issues.apache.org/jira/browse/IGNITE-15947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Semyon Danilov updated IGNITE-15947:
------------------------------------
Description:
In order to support arbitrary class structure changes, the object serialization
must be performed according to the local class descriptor, but the object
deserialization must be performed according to the remote class descriptor from
the node that actually serialized the object. Therefore, the descriptors must
be shared between Ignite nodes to support the protocol:
* Trivially, the descriptors can be sent along with the object itself. This
approach can be used for debugging, but induces a significant serialization
overhead as the same descriptors will be sent with different object instances.
* Descriptor availability can be tracked on a per-session p2p level. If there
is a notion of a session between nodes, the sending side can track which
descriptors were already sent to the remote side before actually sending the
serialized object. If there are unsent descriptor, they are sent to the remote
side prior to sending the serialized object. The receiving side must use the
descriptor from the particular session to deserialize the object. In this case,
even if two different nodes send the class with the same name and different
structure, the receiving side will be able to properly deserialize the object.
See
https://github.com/gridgain/gridgain-9-ce/blob/iep-67/modules/network/README.md
> Cross-node descriptors exchange
> -------------------------------
>
> Key: IGNITE-15947
> URL: https://issues.apache.org/jira/browse/IGNITE-15947
> Project: Ignite
> Issue Type: Task
> Reporter: Semyon Danilov
> Priority: Major
> Labels: ignite-3
>
> In order to support arbitrary class structure changes, the object
> serialization must be performed according to the local class descriptor, but
> the object deserialization must be performed according to the remote class
> descriptor from the node that actually serialized the object. Therefore, the
> descriptors must be shared between Ignite nodes to support the protocol:
> * Trivially, the descriptors can be sent along with the object itself. This
> approach can be used for debugging, but induces a significant serialization
> overhead as the same descriptors will be sent with different object instances.
> * Descriptor availability can be tracked on a per-session p2p level. If
> there is a notion of a session between nodes, the sending side can track
> which descriptors were already sent to the remote side before actually
> sending the serialized object. If there are unsent descriptor, they are sent
> to the remote side prior to sending the serialized object. The receiving side
> must use the descriptor from the particular session to deserialize the
> object. In this case, even if two different nodes send the class with the
> same name and different structure, the receiving side will be able to
> properly deserialize the object.
> See
> https://github.com/gridgain/gridgain-9-ce/blob/iep-67/modules/network/README.md
--
This message was sent by Atlassian Jira
(v8.20.1#820001)