Index: src/main/java/org/apache/hadoop/hbase/util/PoolMap.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/util/PoolMap.java (revision 1162988) +++ src/main/java/org/apache/hadoop/hbase/util/PoolMap.java (working copy) @@ -93,7 +93,14 @@ public boolean remove(K key, V value) { Pool pool = pools.get(key); - return pool != null ? pool.remove(value) : false; + boolean res = false; + if (pool != null) { + res = pool.remove(value); + if (res && pool.size() == 0) { + pools.remove(key); + } + } + return res; } @Override Index: src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (revision 1162988) +++ src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (working copy) @@ -104,6 +104,9 @@ try { this.connection.getMaster(); break; + } catch (MasterNotRunningException mnre) { + HConnectionManager.deleteStaleConnection(this.connection); + this.connection = HConnectionManager.getConnection(this.conf); } catch (UndeclaredThrowableException ute) { HConnectionManager.deleteStaleConnection(this.connection); this.connection = HConnectionManager.getConnection(this.conf);