Repository: hbase Updated Branches: refs/heads/master 15c03fd1c -> 7fd3532de
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/7fd3532d Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7fd3532d Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7fd3532d Branch: refs/heads/master Commit: 7fd3532de63d7b1885d6993c11a35c2f85e26631 Parents: 15c03fd Author: tedyu <yuzhih...@gmail.com> Authored: Mon Jun 6 18:35:15 2016 -0700 Committer: tedyu <yuzhih...@gmail.com> Committed: Mon Jun 6 18:35:15 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/7fd3532d/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 93828eb..ff3d1c7 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 @@ -171,7 +171,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; + } } }