Aljoscha Krettek created FLINK-6353: ---------------------------------------
Summary: Restoring using CheckpointedRestoring does not work from 1.2 to 1.2 Key: FLINK-6353 URL: https://issues.apache.org/jira/browse/FLINK-6353 Project: Flink Issue Type: Bug Components: DataStream API, State Backends, Checkpointing Affects Versions: 1.2.0, 1.2.1 Reporter: Aljoscha Krettek Assignee: Aljoscha Krettek State that was checkpointed using {{Checkpointed}} (on a user function) cannot be restored using {{CheckpointedRestoring}} when the savepoint was done on Flink 1.2. The reason is an overzealous check in {{AbstractUdfStreamOperator}} that only restores from "legacy" operator state using {{CheckpointedRestoring}} when the stream is a {{Migration}} stream. We can remove that check but still need to make sure to read away the byte that indicates whether there is legacy state, which is written when we're restoring from a Flink 1.1 savepoint. Also, if we remove the check, the procedure for a user to migrate a user function away from the {{Checkpointed}} interface is this: # Perform savepoint with user function still implementing {{Checkpointed}}, shutdown job # Change user function to implement {{CheckpointedRestoring}} # Restore from previous savepoint, user function has to somehow move the state that is restored using {{CheckpointedRestoring}} to another type of state, .e.g operator state, using the {{OperatorStateStore}}. # Perform another savepoint, shutdown job # Remove {{CheckpointedRestoring}} interface from user function # Restore from the second savepoint # Done. If the {{CheckpointedRestoring}} interface is not removed as prescribed in the last steps then a future restore of a new savepoint will fail because Flink will try to read legacy operator state that is not there anymore. The above steps also apply to Flink 1.3, when a user want's to move away from the {{Checkpointed}} interface. -- This message was sent by Atlassian JIRA (v6.3.15#6346)