[
https://issues.apache.org/jira/browse/FLINK-6353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15980977#comment-15980977
]
Aljoscha Krettek commented on FLINK-6353:
-----------------------------------------
So having {{CheckpointedFunction}} would mean that
{{Checkpointed.snapshotState()}} is never called while
{{Checkpointed.restoreState()}} is called only the first time we restore from a
snapshot with legacy state. Correct? That sounds good and we could do it in
addition to the complicated way, which just works without us adding anything
once this fix is in.
> 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)