LENS-1278 : Fix too many instances of UDFClassLoader
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/35aba09a Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/35aba09a Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/35aba09a Branch: refs/heads/master Commit: 35aba09ab0288f67634f70ad65ea41ed89322892 Parents: baf4e76 Author: Amareshwari Sriramadasu <[email protected]> Authored: Fri Aug 19 12:37:02 2016 +0530 Committer: Amareshwari Sriramadasu <[email protected]> Committed: Mon Aug 22 10:32:29 2016 +0530 ---------------------------------------------------------------------- .../java/org/apache/lens/server/session/LensSessionImpl.java | 4 ++++ .../java/org/apache/lens/server/session/SessionClassLoader.java | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/35aba09a/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java b/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java index 3003ab7..a6013e7 100644 --- a/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java @@ -221,6 +221,8 @@ public class LensSessionImpl extends HiveSessionImpl implements AutoCloseable { } sessionDbClassLoaders.clear(); } + // reset classloader in close + Thread.currentThread().setContextClassLoader(LensSessionImpl.class.getClassLoader()); } public CubeMetastoreClient getCubeMetastoreClient() throws LensException { @@ -272,6 +274,8 @@ public class LensSessionImpl extends HiveSessionImpl implements AutoCloseable { setActive(); if (acquireCount.decrementAndGet() == 0) { super.release(userAccess); + // reset classloader in release + Thread.currentThread().setContextClassLoader(LensSessionImpl.class.getClassLoader()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/35aba09a/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java b/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java index f5e2068..0230db6 100644 --- a/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java +++ b/lens-server/src/main/java/org/apache/lens/server/session/SessionClassLoader.java @@ -20,7 +20,8 @@ package org.apache.lens.server.session; import java.io.IOException; import java.net.URL; -import java.net.URLClassLoader; + +import org.apache.hadoop.hive.ql.exec.UDFClassLoader; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -29,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @EqualsAndHashCode(callSuper = false) -public class SessionClassLoader extends URLClassLoader { +public class SessionClassLoader extends UDFClassLoader { @Getter @Setter private boolean closed;
