[ 
https://issues.apache.org/jira/browse/FLINK-37524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17937833#comment-17937833
 ] 

Yanfei Lei commented on FLINK-37524:
------------------------------------

[~mayuehappy] Do you mean the differences in 
`RocksDBKeyedStateBackend#createState` and 
`ForStKeyedStateBackend#createStateInternal`?

The State Serializer is gotten from `tryRegisterKvStateInformation`, if job is 
restored from checkpoint, 
`kvStateInformation` would be filled by information in checkpoint.

IIUC, ForStKeyedStateBackend implement `tryRegisterKvStateInformation`, so the 
old State Serializer in old kvStateInformation would be used. Correct me if I 
miss something. 

> State Serializer in ForState should restore from oldStateInfo in Checkpoint
> ---------------------------------------------------------------------------
>
>                 Key: FLINK-37524
>                 URL: https://issues.apache.org/jira/browse/FLINK-37524
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / State Backends
>    Affects Versions: 2.0.0
>            Reporter: Yue Ma
>            Priority: Major
>             Fix For: 2.1.0
>
>
> Currently, when creating using ForStKeyedStateBackend create a new State , 
> *_AbstractKeyedState_* will directly use the serializer in 
> _*StateDescriptor*_ regardless of whether it is restored from a Checkpoint.
> However, this may cause data to be unable to be restored when the last 
> serializer changes (for example, the class registration order in 
> *_KryoSerializer_* has changed, for specific cases, please refer to 
> {*}_StateBackendTestBase#testKryoRestoreResilienceWithDifferentRegistrationOrder_{*}).
>  Therefore, when creating a State from a Checkpoint, oldStateInfo should be 
> used as the new State's Serializer.



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

Reply via email to