[ 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. Some thoughts on 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, 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} > 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. > Some thoughts on 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)