[ 
https://issues.apache.org/jira/browse/IGNITE-24170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Pereslegin updated IGNITE-24170:
--------------------------------------
    Description: 
At the moment, changing the serialization format of catalog descriptors lead to 
the loss of backward compatibility.

Currently, all objects are written under version 1 (see 
{{UpdateLogMarshallerImpl#PROTOCOL_VERSION}}.

It is necessary to develop a new version of the serialization protocol to 
support backward compatibility and formalize the rules for versioning catalog 
descriptors.

Idea for future implementation (copied from here 
https://issues.apache.org/jira/browse/IGNITE-21230?focusedCommentId=17815191&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17815191
 )

{panel}
It is necessary to maintain a registry of all types of serializable objects 
(nested and external) and their serializers with a specific version.

When serializing, we must write current version of the object format 
(serializer version).

When deserializing, we need to get the required serializer (object type + 
version) from the registry.

>From the implementation side, it is supposed to add some "mix" of 
>IgniteDataInput/IgniteDataOutput and ObjectInput/ObjectOutput which should be 
>able to serialize/deserialize object types that are registered in the 
>serializer registry.
{panel}


  was:
At the moment, changing the serialization format of catalog descriptors lead to 
the loss of backward compatibility.

Currently, all objects are written under version 1 (see 
{{UpdateLogMarshallerImpl#PROTOCOL_VERSION}}.

It is necessary to develop a new version of the serialization protocol to 
support backward compatibility and formalize the rules for versioning catalog 
descriptors.

Idea for future implementation (copied from here 
https://issues.apache.org/jira/browse/IGNITE-21230?focusedCommentId=17815191&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17815191
 )

{panel}
It is necessary to maintain a registry of all types of serializable objects 
(nested and external) and their serializers with a specific version.

When serializing, you must write current version of the object format 
(serializer version).

When deserializing, you need to get the required serializer (object type + 
version) from the registry.

>From the implementation side, it is supposed to add some "mix" of 
>IgniteDataInput/IgniteDataOutput and ObjectInput/ObjectOutput which should be 
>able to serialize/deserialize object types that are registered in the 
>serializer registry.
{panel}



> Rework the serialization protocol for catalog descriptors, formalize 
> versioning rules.
> --------------------------------------------------------------------------------------
>
>                 Key: IGNITE-24170
>                 URL: https://issues.apache.org/jira/browse/IGNITE-24170
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>    Affects Versions: 3.0
>            Reporter: Pavel Pereslegin
>            Priority: Blocker
>              Labels: ignite-3
>             Fix For: 3.1
>
>
> At the moment, changing the serialization format of catalog descriptors lead 
> to the loss of backward compatibility.
> Currently, all objects are written under version 1 (see 
> {{UpdateLogMarshallerImpl#PROTOCOL_VERSION}}.
> It is necessary to develop a new version of the serialization protocol to 
> support backward compatibility and formalize the rules for versioning catalog 
> descriptors.
> Idea for future implementation (copied from here 
> https://issues.apache.org/jira/browse/IGNITE-21230?focusedCommentId=17815191&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17815191
>  )
> {panel}
> It is necessary to maintain a registry of all types of serializable objects 
> (nested and external) and their serializers with a specific version.
> When serializing, we must write current version of the object format 
> (serializer version).
> When deserializing, we need to get the required serializer (object type + 
> version) from the registry.
> From the implementation side, it is supposed to add some "mix" of 
> IgniteDataInput/IgniteDataOutput and ObjectInput/ObjectOutput which should be 
> able to serialize/deserialize object types that are registered in the 
> serializer registry.
> {panel}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to