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,

Reply via email to