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); } }