Hello dear community, We are trying to upgrade our flink from 1.9 to 1.13, but it seems the same job running in 1.13 cannot restore the checkpoint / savepoint created by 1.9.
The stacktrace looks like: java.lang.Exception: Exception while creating StreamOperatorStateContext. at org.apache.flink.streaming.api.operators. StreamTaskStateInitializerImpl.streamOperatorStateContext( StreamTaskStateInitializerImpl.java:254) at org.apache.flink.streaming.api.operators.AbstractStreamOperator .initializeState(AbstractStreamOperator.java:272) at org.apache.flink.streaming.runtime.tasks.OperatorChain .initializeStateAndOpenOperators(OperatorChain.java:441) at org.apache.flink.streaming.runtime.tasks.StreamTask.restoreGates( StreamTask.java:585) at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1 .call(StreamTaskActionExecutor.java:55) at org.apache.flink.streaming.runtime.tasks.StreamTask.executeRestore( StreamTask.java:565) at org.apache.flink.streaming.runtime.tasks.StreamTask .runWithCleanUpOnFail(StreamTask.java:650) at org.apache.flink.streaming.runtime.tasks.StreamTask.restore( StreamTask.java:540) at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:759) at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566) at java.lang.Thread.run(Thread.java:750) Caused by: org.apache.flink.util.FlinkException: Could not restore keyed state backend for KeyedCoProcessOperatorWithWatermarkDelay_52d48a9d6968eeb7cdcdccfc7aa07751_(3 /3) from any of the 1 provided restore options. at org.apache.flink.streaming.api.operators.BackendRestorerProcedure .createAndRestore(BackendRestorerProcedure.java:160) at org.apache.flink.streaming.api.operators. StreamTaskStateInitializerImpl.keyedStatedBackend( StreamTaskStateInitializerImpl.java:345) at org.apache.flink.streaming.api.operators. StreamTaskStateInitializerImpl.streamOperatorStateContext( StreamTaskStateInitializerImpl.java:163) ... 10 more Caused by: org.apache.flink.runtime.state.BackendBuildingException: Caught unexpected exception. at org.apache.flink.contrib.streaming.state. RocksDBKeyedStateBackendBuilder.build(RocksDBKeyedStateBackendBuilder.java: 394) at org.apache.flink.contrib.streaming.state.EmbeddedRocksDBStateBackend .createKeyedStateBackend(EmbeddedRocksDBStateBackend.java:465) at org.apache.flink.contrib.streaming.state.RocksDBStateBackend .createKeyedStateBackend(RocksDBStateBackend.java:345) at org.apache.flink.contrib.streaming.state.RocksDBStateBackend .createKeyedStateBackend(RocksDBStateBackend.java:87) at org.apache.flink.streaming.api.operators. StreamTaskStateInitializerImpl.lambda$keyedStatedBackend$1( StreamTaskStateInitializerImpl.java:328) at org.apache.flink.streaming.api.operators.BackendRestorerProcedure .attemptCreateAndRestore(BackendRestorerProcedure.java:168) at org.apache.flink.streaming.api.operators.BackendRestorerProcedure .createAndRestore(BackendRestorerProcedure.java:135) ... 12 more Caused by: org.apache.flink.util.StateMigrationException: The new key serializer (org.apache.flink.api.java.typeutils.runtime.RowSerializer@ 896510d) must be compatible with the previous key serializer (org.apache.flink.api.java.typeutils.runtime.RowSerializer@8965053). at org.apache.flink.contrib.streaming.state.restore. RocksDBIncrementalRestoreOperation.readMetaData( RocksDBIncrementalRestoreOperation.java:548) at org.apache.flink.contrib.streaming.state.restore. RocksDBIncrementalRestoreOperation.readMetaData( RocksDBIncrementalRestoreOperation.java:515) at org.apache.flink.contrib.streaming.state.restore. RocksDBIncrementalRestoreOperation.restoreFromLocalState( RocksDBIncrementalRestoreOperation.java:230) at org.apache.flink.contrib.streaming.state.restore. RocksDBIncrementalRestoreOperation.restoreFromRemoteState( RocksDBIncrementalRestoreOperation.java:220) at org.apache.flink.contrib.streaming.state.restore. RocksDBIncrementalRestoreOperation.restoreWithoutRescaling( RocksDBIncrementalRestoreOperation.java:187) at org.apache.flink.contrib.streaming.state.restore. RocksDBIncrementalRestoreOperation.restore( RocksDBIncrementalRestoreOperation.java:167) at org.apache.flink.contrib.streaming.state. RocksDBKeyedStateBackendBuilder.build(RocksDBKeyedStateBackendBuilder.java: 314) ... 18 more After some debugging, the compatibility check in the restore is `COMPATIBLE_AFTER_MIGRATION`, which according to the doc means the state created by 1.9 needs to be read by old serializer and then written by the new serializer. Do you know if such tooling exists? Best regards,