You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Chesnay Schepler (JIRA)" <ji...@apache.org> on 2017/09/06 13:20:00 UTC

[jira] [Commented] (FLINK-7595) Removing stateless task from task chain breaks savepoint restore

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

Chesnay Schepler commented on FLINK-7595:
-----------------------------------------

I think this is a bug that must've been introduced around 1.3 when we refactored state to be stored by operator and not by task. We've always checked that all stateful tasks could be mapped to the new program, and failed otherwise unless the --allowNonRestoredState flag was set. Before the refactoring, the savepoint only contained entries for tasks that actually had some state, whereas now the savepoint has an entry for every operator, regardless of whether state was stored or not.

We could amend the else block in the SavepointLoader at L122
{code}
			} else {
				String msg = String.format("Failed to rollback to savepoint %s. " +
								"Cannot map savepoint state for operator %s to the new program, " +
								"because the operator is not available in the new program. If " +
								"you want to allow to skip this, you can set the --allowNonRestoredState " +
								"option on the CLI.",
						savepointPath, operatorState.getOperatorID());

				throw new IllegalStateException(msg);
}
{code}
to additionally check whether the state is non-empty by iterating over the contained {{OperatorSubtaskStates}} and calling {{OperatorSubtaskState#hasState()}}.
Note that we can't use {{OperatorState#getStateSize()}} and compare it to zero as the documentation says that zero may also signify an unknown state size.

> Removing stateless task from task chain breaks savepoint restore
> ----------------------------------------------------------------
>
>                 Key: FLINK-7595
>                 URL: https://issues.apache.org/jira/browse/FLINK-7595
>             Project: Flink
>          Issue Type: Bug
>          Components: State Backends, Checkpointing
>            Reporter: Ufuk Celebi
>            Assignee: Chesnay Schepler
>         Attachments: ChainedTaskRemoveTest.java
>
>
> When removing a stateless operator from a 2-task chain where the head operator is stateful breaks savepoint restore with 
> {code}
> Caused by: java.lang.IllegalStateException: Failed to rollback to savepoint /var/folders/py/s_1l8vln6f19ygc77m8c4zhr0000gn/T/junit1167397515334838028/junit8006766303945373008/savepoint-cb0bcf-3cfa67865ac0. Cannot map savepoint state...
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)