Index: src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java (revision 992429) +++ src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java (working copy) @@ -351,7 +351,7 @@ */ public void close() { try { - if(zooKeeper != null) { + if (zooKeeper != null) { zooKeeper.close(); // super.close(); } Index: src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java (revision 992429) +++ src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java (working copy) @@ -85,7 +85,15 @@ } int timeout = conf.getInt("zookeeper.session.timeout", 60 * 1000); LOG.debug("Opening connection to ZooKeeper with quorum (" + quorum + ")"); - return new ZooKeeper(quorum, timeout, watcher); + ZooKeeper zk = new ZooKeeper(quorum, timeout, watcher); + IOException ioe = null; + try { + throw new IOException(); + } catch(IOException e) { + ioe = e; + } + LOG.info("Connected " + zk.toString() + ", sessionid=" + zk.getSessionId(), ioe); + return zk; } // Index: src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 992429) +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -83,6 +83,7 @@ import org.apache.hadoop.hbase.catalog.RootLocationEditor; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.HConnectionManager; import org.apache.hadoop.hbase.client.MultiPut; import org.apache.hadoop.hbase.client.MultiPutResponse; import org.apache.hadoop.hbase.client.Put; @@ -504,9 +505,9 @@ HBaseRPC.stopProxy(this.hbaseMaster); this.hbaseMaster = null; } - + this.leases.close(); + HConnectionManager.deleteConnectionInfo(conf, true); this.zooKeeper.close(); - if (!killed) { join(); } @@ -703,6 +704,9 @@ // Init in here rather than in constructor after thread name has been set this.metrics = new RegionServerMetrics(); startServiceThreads(); + LOG.info("Serving as " + this.serverInfo.getServerName() + + ", sessionid=0x" + + Long.toHexString(this.zooKeeper.getZooKeeper().getSessionId())); isOnline = true; } catch (Throwable e) { this.isOnline = false; Index: src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java (revision 992429) +++ src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java (working copy) @@ -254,4 +254,4 @@ admin.createTable(htd); cluster.shutdown(); } -} +} \ No newline at end of file Index: src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 992429) +++ src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -62,6 +62,7 @@ import org.apache.hadoop.hbase.catalog.MetaEditor; import org.apache.hadoop.hbase.catalog.MetaReader; import org.apache.hadoop.hbase.client.HBaseAdmin; +import org.apache.hadoop.hbase.client.HConnectionManager; import org.apache.hadoop.hbase.client.MetaScanner; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ServerConnection; @@ -265,7 +266,8 @@ this.clusterStatusTracker.start(); LOG.info("Server active/primary master; " + this.address + - "; clusterStarter=" + this.clusterStarter); + "; clusterStarter=" + this.clusterStarter + ", sessionid=0x" + + Long.toHexString(this.zooKeeper.getZooKeeper().getSessionId())); } /** @@ -319,8 +321,9 @@ this.rpcServer.stop(); if (this.balancerChore != null) this.balancerChore.interrupt(); this.activeMasterManager.stop(); + this.executorService.shutdown(); + HConnectionManager.deleteConnectionInfo(this.conf, true); this.zooKeeper.close(); - this.executorService.shutdown(); LOG.info("HMaster main thread exiting"); } Index: src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java (revision 992429) +++ src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java (working copy) @@ -924,8 +924,10 @@ throws ZooKeeperConnectionException { if(zooKeeper == null) { try { - zooKeeper = new ZooKeeperWatcher(conf, - ZKUtil.getZooKeeperClusterKey(conf), this); + this.zooKeeper = new ZooKeeperWatcher(conf, + ZKUtil.getZooKeeperClusterKey(conf), this); + LOG.debug("zkw created, sessionid=0x" + + Long.toHexString(this.zooKeeper.getZooKeeper().getSessionId())); } catch (IOException e) { throw new ZooKeeperConnectionException(e); } @@ -1289,6 +1291,12 @@ HBaseRPC.stopProxy(i); } } + if (this.zooKeeper != null) { + LOG.debug("Closed zookeeper sessionid=0x" + + Long.toHexString(this.zooKeeper.getZooKeeper().getSessionId())); + this.zooKeeper.close(); + this.zooKeeper = null; + } } /** @@ -1523,10 +1531,6 @@ public void abort(final String msg, Throwable t) { if (t != null) LOG.fatal(msg, t); else LOG.fatal(msg); - if(zooKeeper != null) { - zooKeeper.close(); - zooKeeper = null; - } } } }