Repository: hbase
Updated Branches:
  refs/heads/0.98 ca219267c -> f60e0bd8f


HBASE-11460 Deadlock in HMaster on masterAndZKLock in HConnectionManager (Ted 
Yu)


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

Branch: refs/heads/0.98
Commit: f60e0bd8f3e38c58b95ab0c746a66c595f234653
Parents: ca21926
Author: Andrew Purtell <apurt...@apache.org>
Authored: Fri Jul 11 13:52:16 2014 -0700
Committer: Andrew Purtell <apurt...@apache.org>
Committed: Fri Jul 11 13:52:16 2014 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/client/HConnectionManager.java  | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/f60e0bd8/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
index 003bc8e..7f5f80b 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
@@ -1747,7 +1747,7 @@ public class HConnectionManager {
     }
 
     private ZooKeeperKeepAliveConnection keepAliveZookeeper;
-    private int keepAliveZookeeperUserCount;
+    private AtomicInteger keepAliveZookeeperUserCount = new AtomicInteger(0);
     private boolean canCloseZKW = true;
 
     // keepAlive time, in ms. No reason to make it configurable.
@@ -1768,7 +1768,7 @@ public class HConnectionManager {
           // But there is a retry mechanism in the ZooKeeperWatcher itself
           keepAliveZookeeper = new ZooKeeperKeepAliveConnection(conf, 
this.toString(), this);
         }
-        keepAliveZookeeperUserCount++;
+        keepAliveZookeeperUserCount.incrementAndGet();
         keepZooKeeperWatcherAliveUntil = Long.MAX_VALUE;
         return keepAliveZookeeper;
       }
@@ -1779,8 +1779,7 @@ public class HConnectionManager {
         return;
       }
       synchronized (masterAndZKLock) {
-        --keepAliveZookeeperUserCount;
-        if (keepAliveZookeeperUserCount <= 0 ){
+        if (keepAliveZookeeperUserCount.decrementAndGet() <= 0 ){
           keepZooKeeperWatcherAliveUntil = System.currentTimeMillis() + 
keepAlive;
         }
       }
@@ -1860,7 +1859,7 @@ public class HConnectionManager {
           keepAliveZookeeper.internalClose();
           keepAliveZookeeper = null;
         }
-        keepAliveZookeeperUserCount = 0;
+        keepAliveZookeeperUserCount.set(0);
       }
     }
 

Reply via email to