Repository: hbase
Updated Branches:
  refs/heads/branch-1 76404238a -> fad99a3f6


HBASE-15803 ZooKeeperWatcher's constructor can leak a ZooKeeper instance with 
throwing ZooKeeperConnectionException when canCreateBaseZNode is true


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

Branch: refs/heads/branch-1
Commit: fad99a3f68577c7702d104de332545ab188ccaed
Parents: 7640423
Author: tedyu <yuzhih...@gmail.com>
Authored: Tue Jun 7 09:14:01 2016 -0700
Committer: tedyu <yuzhih...@gmail.com>
Committed: Tue Jun 7 09:14:01 2016 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/fad99a3f/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
index e6c8eb9..3b0c2b6 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
@@ -181,7 +181,17 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
     this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, pendingWatcher, 
identifier);
     pendingWatcher.prepare(this);
     if (canCreateBaseZNode) {
-      createBaseZNodes();
+      try {
+        createBaseZNodes();
+      } catch (ZooKeeperConnectionException zce) {
+        try {
+          this.recoverableZooKeeper.close();
+        } catch (InterruptedException ie) {
+          LOG.debug("Encountered InterruptedException when closing " + 
this.recoverableZooKeeper);
+          Thread.currentThread().interrupt();
+        }
+        throw zce;
+      }
     }
   }
 

Reply via email to