diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Registry.java ql/src/java/org/apache/hadoop/hive/ql/exec/Registry.java index 76dd66e444..8de6032345 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Registry.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Registry.java @@ -723,12 +723,15 @@ public void clear() { } } - public void closeCUDFLoaders() { + public void closeCUDFLoaders(ClassLoader baseLoader) { lock.lock(); try { try { for(ClassLoader loader: mSessionUDFLoaders) { - JavaUtils.closeClassLoader(loader); + // do a sanity check here just in case + if (loader != baseLoader) { + JavaUtils.closeClassLoader(loader); + } } } catch (IOException ie) { LOG.error("Error in close loader: " + ie); diff --git ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 6c6138ef56..864942ab1a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -1801,7 +1801,7 @@ public void close() throws IOException { try { closeSparkSession(); - registry.closeCUDFLoaders(); + registry.closeCUDFLoaders(parentLoader); dropSessionPaths(sessionConf); unCacheDataNucleusClassLoaders(); } finally {