Repository: lens
Updated Branches:
  refs/heads/master 1774ced2e -> fcc0cafd6


LENS-1158: Thread names with hive2 build are growing huge


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/fcc0cafd
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/fcc0cafd
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/fcc0cafd

Branch: refs/heads/master
Commit: fcc0cafd61dc8d2ea2009277c370236127e9d27e
Parents: 1774ced
Author: Rajat Khandelwal <[email protected]>
Authored: Thu Jun 2 13:11:13 2016 +0530
Committer: Puneet <[email protected]>
Committed: Thu Jun 2 13:11:14 2016 +0530

----------------------------------------------------------------------
 .../lens/server/session/LensSessionImpl.java    | 22 ++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/fcc0cafd/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 82a4e15..2b84d3a 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
@@ -65,7 +65,22 @@ public class LensSessionImpl extends HiveSessionImpl {
 
   /** The session timeout. */
   private long sessionTimeout;
-  private int acquireCount = 0;
+  private static class IntegerThreadLocal extends ThreadLocal<Integer> {
+    @Override
+    protected Integer initialValue() {
+      return 0;
+    }
+    public Integer incrementAndGet() {
+      set(get() + 1);
+      return get();
+    }
+    public Integer decrementAndGet() {
+      set(get() - 1);
+      return get();
+    }
+  }
+  private IntegerThreadLocal acquireCount = new IntegerThreadLocal();
+
   /** The conf. */
   private Configuration conf = createDefaultConf();
 
@@ -228,7 +243,7 @@ public class LensSessionImpl extends HiveSessionImpl {
    */
   public synchronized void acquire() {
     super.acquire(true);
-    acquireCount++;
+    acquireCount.incrementAndGet();
     // Update thread's class loader with current DBs class loader
     ClassLoader classLoader = getClassLoader(getCurrentDatabase());
     Thread.currentThread().setContextClassLoader(classLoader);
@@ -242,8 +257,7 @@ public class LensSessionImpl extends HiveSessionImpl {
    */
   public synchronized void release() {
     lastAccessTime = System.currentTimeMillis();
-    acquireCount--;
-    if (acquireCount == 0) {
+    if (acquireCount.decrementAndGet() == 0) {
       super.release(true);
     }
   }

Reply via email to