From e695ef3cd02b8d6e3caaeb5c7b966d09da254eef Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Tue, 12 Oct 2010 15:06:15 +0000 Subject: [PATCH] More fixup for hbase merge tool -- test for master being offline git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1021791 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/java/org/apache/hadoop/hbase/util/Merge.java | 3 +++ .../apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java | 7 +++++-- .../java/org/apache/hadoop/hbase/util/TestMergeTool.java | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/hadoop/hbase/util/Merge.java b/src/main/java/org/apache/hadoop/hbase/util/Merge.java index 2b03ed920e3..4551982e720 100644 --- a/src/main/java/org/apache/hadoop/hbase/util/Merge.java +++ b/src/main/java/org/apache/hadoop/hbase/util/Merge.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.MasterNotRunningException; +import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HBaseAdmin; @@ -92,6 +93,8 @@ public class Merge extends Configured implements Tool { HBaseAdmin.checkHBaseAvailable(getConf()); LOG.fatal("HBase cluster must be off-line."); return -1; + } catch (ZooKeeperConnectionException zkce) { + // If no zk, presume no master. } catch (MasterNotRunningException e) { // Expected. Ignore. } diff --git a/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java b/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java index b2a2e9aa59d..0a9c8997535 100644 --- a/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java +++ b/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java @@ -29,6 +29,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; @@ -90,10 +91,11 @@ public class ZooKeeperWatcher implements Watcher { * @param descriptor Descriptive string that is added to zookeeper sessionid * and used as identifier for this instance. * @throws IOException + * @throws ZooKeeperConnectionException */ public ZooKeeperWatcher(Configuration conf, String descriptor, Abortable abortable) - throws IOException { + throws IOException, ZooKeeperConnectionException { this.quorum = ZKConfig.getZKQuorumServersString(conf); // Identifier will get the sessionid appended later below down when we // handle the syncconnect event. @@ -127,7 +129,8 @@ public class ZooKeeperWatcher implements Watcher { ke = e; } } while (isFinishedRetryingRecoverable(finished)); - if (ke != null) throw ke; + // Convert connectionloss exception to ZKCE. + if (ke != null) throw new ZooKeeperConnectionException(ke); ZKUtil.createAndFailSilent(this, assignmentZNode); ZKUtil.createAndFailSilent(this, rsZNode); ZKUtil.createAndFailSilent(this, tableZNode); diff --git a/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java b/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java index 6aaa79da090..18cd055a85d 100644 --- a/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java +++ b/src/test/java/org/apache/hadoop/hbase/util/TestMergeTool.java @@ -58,6 +58,9 @@ public class TestMergeTool extends HBaseTestCase { @Override public void setUp() throws Exception { + // Set the timeout down else this test will take a while to complete. + this.conf.setLong("hbase.zookeeper.recoverable.waittime", 1000); + this.conf.set("hbase.hstore.compactionThreshold", "2"); // Create table description