You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by pa...@apache.org on 2018/01/09 01:29:48 UTC
[5/5] drill git commit: DRILL-6063: Set correct ThreadContext
ClassLoader before using Hadoop Configuration class in DrillClient
DRILL-6063: Set correct ThreadContext ClassLoader before using Hadoop Configuration class in DrillClient
This closes #1079
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/27aff35b
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/27aff35b
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/27aff35b
Branch: refs/heads/master
Commit: 27aff35b54df0adfd951c7b7afc47b36a6de5e0a
Parents: 93621eb
Author: Sorabh Hamirwasia <sh...@maprtech.com>
Authored: Tue Jan 2 10:35:19 2018 -0800
Committer: Parth Chandra <pa...@apache.org>
Committed: Mon Jan 8 17:28:59 2018 -0800
----------------------------------------------------------------------
.../java/org/apache/drill/exec/rpc/user/UserClient.java | 11 +++++++++++
1 file changed, 11 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/27aff35b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java
index 2c63cbd..131febf 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java
@@ -344,7 +344,18 @@ public class UserClient
mechanismName = factory.getSimpleName();
logger.trace("Will try to authenticate to server using {} mechanism with encryption context {}",
mechanismName, connection.getEncryptionCtxtString());
+
+ // Update the thread context class loader to current class loader
+ // See DRILL-6063 for detailed description
+ final ClassLoader oldThreadCtxtCL = Thread.currentThread().getContextClassLoader();
+ final ClassLoader newThreadCtxtCL = this.getClass().getClassLoader();
+ Thread.currentThread().setContextClassLoader(newThreadCtxtCL);
+
ugi = factory.createAndLoginUser(propertiesMap);
+
+ // Reset the thread context class loader to original one
+ Thread.currentThread().setContextClassLoader(oldThreadCtxtCL);
+
saslClient = factory.createSaslClient(ugi, propertiesMap);
if (saslClient == null) {
throw new SaslException(String.format(