You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Roman Khachatryan (Jira)" <ji...@apache.org> on 2022/04/22 14:45:00 UTC

[jira] [Resolved] (FLINK-27218) Serializer in OperatorState has not been updated when new Serializers are NOT incompatible

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

Roman Khachatryan resolved FLINK-27218.
---------------------------------------
    Fix Version/s: 1.16.0
                   1.15.1
       Resolution: Fixed

Merged into master as 4033ddc5fa682a1619f8f22348e2ee38afcc1c85,

into 1.15 as 3d4b3a495b273c3a15ce7d35ba5a5b2e4ddc4c20.
 

> Serializer in OperatorState has not been updated when new Serializers are NOT incompatible
> ------------------------------------------------------------------------------------------
>
>                 Key: FLINK-27218
>                 URL: https://issues.apache.org/jira/browse/FLINK-27218
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / State Backends
>    Affects Versions: 1.15.1
>            Reporter: Yue Ma
>            Assignee: Yue Ma
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.16.0, 1.15.1
>
>         Attachments: image-2022-04-13-14-50-10-921.png, image-2022-04-18-21-48-30-519.png
>
>
> OperatorState such as *BroadcastState* or *PartitionableListState*  can only be constructed via {*}DefaultOperatorStateBackend{*}. But when *BroadcastState* or *PartitionableListState* Serializer changes after we restart the job , it seems to have the following problems .
> As an example, we can see how PartitionableListState is initialized.
> First, RestoreOperation will construct a restored PartitionableListState based on the information in the snapshot.
> Then StateMetaInfo in partitionableListState will be updated  as the following code
> {code:java}
> TypeSerializerSchemaCompatibility<S> stateCompatibility =
>                 restoredPartitionableListStateMetaInfo.updatePartitionStateSerializer(newPartitionStateSerializer);
> partitionableListState.setStateMetaInfo(restoredPartitionableListStateMetaInfo);{code}
> The main problem is that there is also an *internalListCopySerializer* in *PartitionableListState* that is built using the previous Serializer and it has not been updated. 
> Therefore, when we update the StateMetaInfo, the *internalListCopySerializer* also needs to be updated.
>  



--
This message was sent by Atlassian Jira
(v8.20.7#820007)