You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by sr...@apache.org on 2019/04/15 11:53:22 UTC
[flink] 06/06: [hotfix] Use TemporaryClassLoaderContext in other
appropriate places in the codebase
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....@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);
}
}