Author: jdcryans
Date: Wed Apr 13 00:01:26 2011
New Revision: 1091609
URL: http://svn.apache.org/viewvc?rev=1091609&view=rev
Log:
HBASE-3755 Catch zk's ConnectionLossException and augment error
message with more help
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ZooKeeperConnectionException.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
Modified: hbase/branches/0.90/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1091609&r1=1091608&r2=1091609&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Wed Apr 13 00:01:26 2011
@@ -14,6 +14,8 @@ Release 0.90.3 - Unreleased
(Ted Yu via Stack)
HBASE-3750 HTablePool.putTable() should call releaseHTableInterface()
for discarded tables (Ted Yu via garyh)
+ HBASE-3755 Catch zk's ConnectionLossException and augment error
+ message with more help
IMPROVEMENT
HBASE-3717 deprecate HTable isTableEnabled() methods in favor of HBaseAdmin
Modified:
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ZooKeeperConnectionException.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ZooKeeperConnectionException.java?rev=1091609&r1=1091608&r2=1091609&view=diff
==============================================================================
---
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ZooKeeperConnectionException.java
(original)
+++
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ZooKeeperConnectionException.java
Wed Apr 13 00:01:26 2011
@@ -43,7 +43,7 @@ public class ZooKeeperConnectionExceptio
* Constructor taking another exception.
* @param e Exception to grab data from.
*/
- public ZooKeeperConnectionException(Exception e) {
- super(e);
+ public ZooKeeperConnectionException(String message, Exception e) {
+ super(message, e);
}
}
Modified:
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java?rev=1091609&r1=1091608&r2=1091609&view=diff
==============================================================================
---
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
(original)
+++
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
Wed Apr 13 00:01:26 2011
@@ -996,8 +996,11 @@ public class HConnectionManager {
if(zooKeeper == null) {
try {
this.zooKeeper = new ZooKeeperWatcher(conf, "hconnection", this);
+ } catch(ZooKeeperConnectionException zce) {
+ throw zce;
} catch (IOException e) {
- throw new ZooKeeperConnectionException(e);
+ throw new ZooKeeperConnectionException("An error is preventing" +
+ " HBase from connecting to ZooKeeper", e);
}
}
return zooKeeper;
Modified:
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java?rev=1091609&r1=1091608&r2=1091609&view=diff
==============================================================================
---
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
(original)
+++
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
Wed Apr 13 00:01:26 2011
@@ -144,13 +144,28 @@ public class ZooKeeperWatcher implements
}
} while (isFinishedRetryingRecoverable(finished));
// Convert connectionloss exception to ZKCE.
- if (ke != null) throw new ZooKeeperConnectionException(ke);
+ if (ke != null) {
+ try {
+ // If we don't close it, the zk connection managers won't be killed
+ this.zooKeeper.close();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ LOG.warn("Interrupted while closing", e);
+ }
+ throw new ZooKeeperConnectionException("HBase is able to connect to" +
+ " ZooKeeper but the connection closes immediately. This could be" +
+ " a sign that the server has too many connections (30 is the" +
+ " default). Consider inspecting your ZK server logs for that" +
+ " error and then make sure you are reusing HBaseConfiguration" +
+ " as often as you can. See HTable's javadoc for more information.",
+ ke);
+ }
ZKUtil.createAndFailSilent(this, assignmentZNode);
ZKUtil.createAndFailSilent(this, rsZNode);
ZKUtil.createAndFailSilent(this, tableZNode);
} catch (KeeperException e) {
- LOG.error(prefix("Unexpected KeeperException creating base node"), e);
- throw new IOException(e);
+ throw new ZooKeeperConnectionException(
+ prefix("Unexpected KeeperException creating base node"), e);
}
}