HBASE-21353 TestHBCKCommandLineParsing#testCommandWithOptions
authorMichael Stack <stack@apache.org>
Tue, 23 Oct 2018 22:18:12 +0000 (15:18 -0700)
committerMichael Stack <stack@apache.org>
Tue, 23 Oct 2018 22:18:12 +0000 (15:18 -0700)
hangs on call to HBCK2#checkHBCKSupport

hbase-hbck2/src/main/java/org/apache/hbase/HBCK2.java
hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKCommandLineParsing.java

index 24717b8..35df153 100644 (file)
@@ -88,13 +88,10 @@ public class HBCK2 extends Configured implements Tool {
   /**
    * Check for HBCK support.
    */
-  void checkHBCKSupport() throws IOException {
-    try (ClusterConnection connection =
-             (ClusterConnection)ConnectionFactory.createConnection(getConf())) {
-      try (Admin admin = connection.getAdmin()) {
-        checkVersion(admin.getClusterMetrics(EnumSet.of(ClusterMetrics.Option.HBASE_VERSION)).
-            getHBaseVersion());
-      }
+  void checkHBCKSupport(Connection connection) throws IOException {
+    try (Admin admin = connection.getAdmin()) {
+      checkVersion(admin.getClusterMetrics(EnumSet.of(ClusterMetrics.Option.HBASE_VERSION)).
+          getHBaseVersion());
     }
   }
 
@@ -110,6 +107,7 @@ public class HBCK2 extends Configured implements Tool {
   TableState setTableState(TableName tableName, TableState.State state) throws IOException {
     try (ClusterConnection conn =
              (ClusterConnection) ConnectionFactory.createConnection(getConf())) {
+      checkHBCKSupport(conn);
       try (Hbck hbck = conn.getHbck()) {
         return hbck.setTableStateInMeta(new TableState(tableName, state));
       }
@@ -132,6 +130,7 @@ public class HBCK2 extends Configured implements Tool {
     boolean overrideFlag = commandLine.hasOption(override.getOpt());
     try (ClusterConnection conn =
              (ClusterConnection) ConnectionFactory.createConnection(getConf())) {
+      checkHBCKSupport(conn);
       try (Hbck hbck = conn.getHbck()) {
         return hbck.assigns(commandLine.getArgList(), overrideFlag);
       }
@@ -154,6 +153,7 @@ public class HBCK2 extends Configured implements Tool {
     boolean overrideFlag = commandLine.hasOption(override.getOpt());
     try (ClusterConnection conn =
              (ClusterConnection) ConnectionFactory.createConnection(getConf())) {
+      checkHBCKSupport(conn);
       try (Hbck hbck = conn.getHbck()) {
         return hbck.unassigns(commandLine.getArgList(), overrideFlag);
       }
@@ -196,6 +196,7 @@ public class HBCK2 extends Configured implements Tool {
     boolean recursiveFlag = commandLine.hasOption(override.getOpt());
     List<Long> pids = Arrays.stream(pidStrs).map(i -> Long.valueOf(i)).collect(Collectors.toList());
     try (ClusterConnection c = (ClusterConnection) ConnectionFactory.createConnection(getConf())) {
+      checkHBCKSupport(c);
       try (Hbck hbck = c.getHbck()) {
         return hbck.bypassProcedure(pids, lockWait, overrideFlag, recursiveFlag);
       }
@@ -348,8 +349,6 @@ public class HBCK2 extends Configured implements Tool {
     if (commandLine.hasOption(parent.getOpt())) {
       getConf().set(HConstants.ZOOKEEPER_ZNODE_PARENT, commandLine.getOptionValue(parent.getOpt()));
     }
-    // Check we can run hbck at all.
-    checkHBCKSupport();
 
     // Now process commands.
     String[] commands = commandLine.getArgs();
index d061767..e8dccb8 100644 (file)
  */
 package org.apache.hbase;
 
-import junit.framework.TestCase;
 import org.apache.commons.cli.ParseException;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.RegionInfo;
-import org.apache.hadoop.hbase.client.TableState;
-import org.apache.hadoop.hbase.master.RegionState;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.Threads;
 import org.apache.logging.log4j.LogManager;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 /**
@@ -71,7 +57,7 @@ public class TestHBCKCommandLineParsing {
   public void testCommandWithOptions() throws IOException {
     HBCK2 hbck = new HBCK2(TEST_UTIL.getConfiguration());
     // The 'x' below should cause the NumberFormatException. The Options should all be good.
-    hbck.run(new String[]{"bypass", "--waitTime=3", "--override", "--recursive", "x"});
+    hbck.run(new String[]{"bypass", "--lockWait=3", "--override", "--recursive", "x"});
   }
 }