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