flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLINK-6714) Operator state backend should set user classloader as context classloader when snapshotting
Date Thu, 25 May 2017 16:53:04 GMT

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

ASF GitHub Bot commented on FLINK-6714:

Github user EronWright commented on a diff in the pull request:

    --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/state/DefaultOperatorStateBackend.java
    @@ -185,13 +185,18 @@ public void dispose() {
     				new HashMap<>(registeredStates.size());
     		// eagerly create deep copies of the list states in the sync phase, so that we can
use them in the async writing
    -		for (Map.Entry<String, PartitionableListState<?>> entry : this.registeredStates.entrySet())
    -			PartitionableListState<?> listState = entry.getValue();
    -			if (null != listState) {
    -				listState = listState.deepCopy();
    +		ClassLoader snapshotClassLoader = Thread.currentThread().getContextClassLoader();
    +		try {
    +			Thread.currentThread().setContextClassLoader(userClassloader);
    --- End diff --
    (nitpick) `Thread.currentThread().setContextClassLoader(userClassloader)` should occur
before the `try` block is entered.   Setting the TCCL occurs in about a half-dozen places
in Flink, and this is inconsistent with most of them.

> Operator state backend should set user classloader as context classloader when snapshotting
> -------------------------------------------------------------------------------------------
>                 Key: FLINK-6714
>                 URL: https://issues.apache.org/jira/browse/FLINK-6714
>             Project: Flink
>          Issue Type: Bug
>          Components: State Backends, Checkpointing
>            Reporter: Tzu-Li (Gordon) Tai
>            Assignee: Tzu-Li (Gordon) Tai
>            Priority: Blocker
> Now that the operator state backend creates a deep copy of the state during the synchronous
part of async checkpoints, it needs to set the user classloader as the thread context classloader,
otherwise serializers that uses serialization for copying will use the wrong classloader when
deserializing the copy.

This message was sent by Atlassian JIRA

View raw message