[ 
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)

Reply via email to