This is an automated email from the ASF dual-hosted git repository.

srichter pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 703dc8dab1ee35b2532b472eec40fdc7dd124cc3
Author: Stefan Richter <s.rich...@data-artisans.com>
AuthorDate: Mon Apr 8 17:38:26 2019 +0200

    [hotfix] Use TemporaryClassLoaderContext in other appropriate places in the 
codebase
---
 .../main/java/org/apache/flink/util/LambdaUtil.java   | 19 +++----------------
 .../table/client/gateway/local/ExecutionContext.java  |  7 ++-----
 2 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/flink-core/src/main/java/org/apache/flink/util/LambdaUtil.java 
b/flink-core/src/main/java/org/apache/flink/util/LambdaUtil.java
index fdb6943..163b583 100644
--- a/flink-core/src/main/java/org/apache/flink/util/LambdaUtil.java
+++ b/flink-core/src/main/java/org/apache/flink/util/LambdaUtil.java
@@ -18,6 +18,7 @@
 
 package org.apache.flink.util;
 
+import org.apache.flink.core.plugin.TemporaryClassLoaderContext;
 import org.apache.flink.util.function.SupplierWithException;
 import org.apache.flink.util.function.ThrowingConsumer;
 import org.apache.flink.util.function.ThrowingRunnable;
@@ -76,16 +77,9 @@ public final class LambdaUtil {
                        final ClassLoader cl,
                        final ThrowingRunnable<E> r) throws E {
 
-               final Thread currentThread = Thread.currentThread();
-               final ClassLoader oldClassLoader = 
currentThread.getContextClassLoader();
-
-               try {
-                       currentThread.setContextClassLoader(cl);
+               try (TemporaryClassLoaderContext tmpCl = new 
TemporaryClassLoaderContext(cl)) {
                        r.run();
                }
-               finally {
-                       currentThread.setContextClassLoader(oldClassLoader);
-               }
        }
 
        /**
@@ -99,15 +93,8 @@ public final class LambdaUtil {
                        final ClassLoader cl,
                        final SupplierWithException<R, E> s) throws E {
 
-               final Thread currentThread = Thread.currentThread();
-               final ClassLoader oldClassLoader = 
currentThread.getContextClassLoader();
-
-               try {
-                       currentThread.setContextClassLoader(cl);
+               try (TemporaryClassLoaderContext tmpCl = new 
TemporaryClassLoaderContext(cl)) {
                        return s.get();
                }
-               finally {
-                       currentThread.setContextClassLoader(oldClassLoader);
-               }
        }
 }
diff --git 
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/ExecutionContext.java
 
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/ExecutionContext.java
index dab6bbe..1649c23 100644
--- 
a/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/ExecutionContext.java
+++ 
b/flink-table/flink-sql-client/src/main/java/org/apache/flink/table/client/gateway/local/ExecutionContext.java
@@ -29,6 +29,7 @@ import org.apache.flink.client.deployment.ClusterDescriptor;
 import org.apache.flink.client.deployment.ClusterSpecification;
 import org.apache.flink.client.program.ClusterClient;
 import org.apache.flink.configuration.Configuration;
+import org.apache.flink.core.plugin.TemporaryClassLoaderContext;
 import org.apache.flink.optimizer.DataStatistics;
 import org.apache.flink.optimizer.Optimizer;
 import org.apache.flink.optimizer.costs.DefaultCostEstimator;
@@ -185,12 +186,8 @@ public class ExecutionContext<T> {
         * Executes the given supplier using the execution context's 
classloader as thread classloader.
         */
        public <R> R wrapClassLoader(Supplier<R> supplier) {
-               final ClassLoader previousClassloader = 
Thread.currentThread().getContextClassLoader();
-               Thread.currentThread().setContextClassLoader(classLoader);
-               try {
+               try (TemporaryClassLoaderContext tmpCl = new 
TemporaryClassLoaderContext(classLoader)){
                        return supplier.get();
-               } finally {
-                       
Thread.currentThread().setContextClassLoader(previousClassloader);
                }
        }
 

Reply via email to