You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by en...@apache.org on 2014/09/03 23:39:45 UTC

[3/3] git commit: HBASE-11826 Split each tableOrRegionName admin methods into two targetted methods (Carter and Enis)

HBASE-11826 Split each tableOrRegionName admin methods into two targetted methods (Carter and Enis)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1a6eea33
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1a6eea33
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1a6eea33

Branch: refs/heads/master
Commit: 1a6eea335f16f92e24834369cd98ea01a60b2db7
Parents: 11ba6ac
Author: Enis Soztutar <en...@apache.org>
Authored: Wed Sep 3 14:39:35 2014 -0700
Committer: Enis Soztutar <en...@apache.org>
Committed: Wed Sep 3 14:39:35 2014 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/client/Admin.java   | 127 ++--
 .../apache/hadoop/hbase/client/HBaseAdmin.java  | 670 +++++++++++--------
 .../hadoop/hbase/IntegrationTestBase.java       |   2 +-
 .../hadoop/hbase/IntegrationTestIngest.java     |  13 +-
 .../IntegrationTestIngestWithEncryption.java    |  12 +-
 .../hbase/IntegrationTestRegionReplicaPerf.java |   7 +-
 .../hbase/chaos/actions/AddColumnAction.java    |   6 +-
 .../chaos/actions/ChangeBloomFilterAction.java  |   8 +-
 .../chaos/actions/ChangeCompressionAction.java  |  10 +-
 .../chaos/actions/ChangeEncodingAction.java     |   6 +-
 .../chaos/actions/ChangeVersionsAction.java     |  10 +-
 .../CompactRandomRegionOfTableAction.java       |  12 +-
 .../hbase/chaos/actions/CompactTableAction.java |  17 +-
 .../actions/FlushRandomRegionOfTableAction.java |  10 +-
 .../hbase/chaos/actions/FlushTableAction.java   |  10 +-
 ...MergeRandomAdjacentRegionsOfTableAction.java |   8 +-
 .../actions/MoveRandomRegionOfTableAction.java  |   8 +-
 .../chaos/actions/MoveRegionsOfTableAction.java |   7 +-
 .../hbase/chaos/actions/RemoveColumnAction.java |  10 +-
 .../chaos/actions/SnapshotTableAction.java      |   7 +-
 .../actions/SplitRandomRegionOfTableAction.java |  10 +-
 .../hbase/chaos/factories/MonkeyFactory.java    |   5 +-
 .../mapreduce/IntegrationTestBulkLoad.java      |  23 +-
 ...IntegrationTestTableSnapshotInputFormat.java |  10 +-
 .../hadoop/hbase/mttr/IntegrationTestMTTR.java  |   3 +-
 .../test/IntegrationTestBigLinkedList.java      |   4 +-
 .../test/IntegrationTestLoadAndVerify.java      |  10 +-
 ...stTimeBoundedRequestsWithRegionReplicas.java |   5 +-
 ...tionTestWithCellVisibilityLoadAndVerify.java |  16 +-
 .../trace/IntegrationTestSendTraceRequests.java |   9 +-
 .../org/apache/hadoop/hbase/TestNamespace.java  |   3 +-
 .../apache/hadoop/hbase/client/TestAdmin.java   |   7 +-
 .../hadoop/hbase/client/TestFromClientSide.java |   2 +-
 .../hbase/client/TestReplicaWithCluster.java    |   2 +-
 .../client/TestSnapshotCloneIndependence.java   |   3 +-
 .../hbase/client/TestTableSnapshotScanner.java  |   2 +-
 .../TestRegionObserverInterface.java            |  17 +-
 .../TestRegionObserverScannerOpenHook.java      |  15 +-
 .../hbase/io/encoding/TestPrefixTree.java       |   2 +-
 .../TableSnapshotInputFormatTestBase.java       |   3 +-
 .../hbase/master/TestAssignmentListener.java    |  10 +-
 .../master/TestDistributedLogSplitting.java     |  12 +-
 .../apache/hadoop/hbase/master/TestMaster.java  |   2 +-
 .../hbase/master/TestTableLockManager.java      |   9 +-
 .../regionserver/TestEncryptionKeyRotation.java |   4 +-
 .../TestEncryptionRandomKeying.java             |   2 +-
 .../TestEndToEndSplitTransaction.java           |   7 +-
 .../TestRegionMergeTransactionOnCluster.java    |   2 +-
 .../regionserver/TestRegionServerMetrics.java   |   2 +-
 .../hadoop/hbase/regionserver/TestTags.java     |  39 +-
 .../hbase/regionserver/wal/TestLogRolling.java  |  21 +-
 .../hadoop/hbase/rest/TestTableResource.java    |   7 +-
 .../security/access/TestTablePermissions.java   |   7 +-
 .../TestVisibilityLabelsWithDeletes.java        | 167 +++--
 .../TestVisibilityWithCheckAuths.java           |  15 +-
 .../apache/hadoop/hbase/util/TestHBaseFsck.java |  43 +-
 .../hbase/util/TestHBaseFsckEncryption.java     |   2 +-
 57 files changed, 798 insertions(+), 664 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
index 2c9b5a3..0fe2ff3 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
@@ -482,102 +482,102 @@ public interface Admin extends Abortable, Closeable {
   List<HRegionInfo> getOnlineRegions(final ServerName sn) throws IOException;
 
   /**
-   * Flush a table or an individual region. Synchronous operation.
+   * Flush a table. Synchronous operation.
    *
-   * @param tableNameOrRegionName table or region to flush
+   * @param tableName table to flush
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void flush(final String tableNameOrRegionName) throws IOException, InterruptedException;
+  void flush(final TableName tableName) throws IOException, InterruptedException;
 
   /**
-   * Flush a table or an individual region. Synchronous operation.
+   * Flush an individual region. Synchronous operation.
    *
-   * @param tableNameOrRegionName table or region to flush
+   * @param regionName region to flush
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void flush(final byte[] tableNameOrRegionName) throws IOException, InterruptedException;
+  void flushRegion(final byte[] regionName) throws IOException, InterruptedException;
 
   /**
-   * Compact a table or an individual region. Asynchronous operation.
+   * Compact a table. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to compact
+   * @param tableName table to compact
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void compact(final String tableNameOrRegionName) throws IOException, InterruptedException;
+  void compact(final TableName tableName) throws IOException, InterruptedException;
 
   /**
-   * Compact a table or an individual region. Asynchronous operation.
+   * Compact an individual region. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to compact
+   * @param regionName region to compact
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void compact(final byte[] tableNameOrRegionName) throws IOException, InterruptedException;
+  void compactRegion(final byte[] regionName) throws IOException, InterruptedException;
 
   /**
-   * Compact a column family within a table or region. Asynchronous operation.
+   * Compact a column family within a table. Asynchronous operation.
    *
-   * @param tableOrRegionName table or region to compact
-   * @param columnFamily column family within a table or region
+   * @param tableName table to compact
+   * @param columnFamily column family within a table
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void compact(String tableOrRegionName, String columnFamily)
-      throws IOException, InterruptedException;
+  void compact(final TableName tableName, final byte[] columnFamily)
+    throws IOException, InterruptedException;
 
   /**
-   * Compact a column family within a table or region. Asynchronous operation.
+   * Compact a column family within a region. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to compact
-   * @param columnFamily column family within a table or region
+   * @param regionName region to compact
+   * @param columnFamily column family within a region
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void compact(final byte[] tableNameOrRegionName, final byte[] columnFamily)
-      throws IOException, InterruptedException;
+  void compactRegion(final byte[] regionName, final byte[] columnFamily)
+    throws IOException, InterruptedException;
 
   /**
-   * Major compact a table or an individual region. Asynchronous operation.
+   * Major compact a table. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to major compact
+   * @param tableName table to major compact
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void majorCompact(final String tableNameOrRegionName) throws IOException, InterruptedException;
+  void majorCompact(TableName tableName) throws IOException, InterruptedException;
 
   /**
    * Major compact a table or an individual region. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to major compact
+   * @param regionName region to major compact
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void majorCompact(final byte[] tableNameOrRegionName) throws IOException, InterruptedException;
+  void majorCompactRegion(final byte[] regionName) throws IOException, InterruptedException;
 
   /**
-   * Major compact a column family within a table or region. Asynchronous operation.
+   * Major compact a column family within a table. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to major compact
-   * @param columnFamily column family within a table or region
+   * @param tableName table to major compact
+   * @param columnFamily column family within a table
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void majorCompact(final String tableNameOrRegionName, final String columnFamily)
-      throws IOException, InterruptedException;
+  void majorCompact(TableName tableName, final byte[] columnFamily)
+    throws IOException, InterruptedException;
 
   /**
-   * Major compact a column family within a table or region. Asynchronous operation.
+   * Major compact a column family within region. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to major compact
-   * @param columnFamily column family within a table or region
+   * @param regionName egion to major compact
+   * @param columnFamily column family within a region
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void majorCompact(final byte[] tableNameOrRegionName, final byte[] columnFamily)
-      throws IOException, InterruptedException;
+  void majorCompactRegion(final byte[] regionName, final byte[] columnFamily)
+    throws IOException, InterruptedException;
 
   /**
    * Move the region <code>r</code> to <code>dest</code>.
@@ -692,37 +692,44 @@ public interface Admin extends Abortable, Closeable {
       final boolean forcible) throws IOException;
 
   /**
-   * Split a table or an individual region. Asynchronous operation.
+   * Split a table. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to split
+   * @param tableName table to split
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void split(final String tableNameOrRegionName) throws IOException, InterruptedException;
+  void split(final TableName tableName) throws IOException, InterruptedException;
 
   /**
-   * Split a table or an individual region.  Implicitly finds an optimal split point.  Asynchronous
-   * operation.
+   * Split an individual region. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table to region to split
+   * @param regionName region to split
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void split(final byte[] tableNameOrRegionName) throws IOException, InterruptedException;
+  void splitRegion(final byte[] regionName) throws IOException, InterruptedException;
 
-  void split(final String tableNameOrRegionName, final String splitPoint)
-      throws IOException, InterruptedException;
+  /**
+   * Split a table. Asynchronous operation.
+   *
+   * @param tableName table to split
+   * @param splitPoint the explicit position to split on
+   * @throws IOException if a remote or network exception occurs
+   * @throws InterruptedException interrupt exception occurred
+   */
+  void split(final TableName tableName, final byte[] splitPoint)
+    throws IOException, InterruptedException;
 
   /**
-   * Split a table or an individual region. Asynchronous operation.
+   * Split an individual region. Asynchronous operation.
    *
-   * @param tableNameOrRegionName table to region to split
+   * @param regionName region to split
    * @param splitPoint the explicit position to split on
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException interrupt exception occurred
    */
-  void split(final byte[] tableNameOrRegionName, final byte[] splitPoint)
-      throws IOException, InterruptedException;
+  void splitRegion(final byte[] regionName, final byte[] splitPoint)
+    throws IOException, InterruptedException;
 
   /**
    * Modify an existing table, more IRB friendly version. Asynchronous operation.  This means that
@@ -880,28 +887,28 @@ public interface Admin extends Abortable, Closeable {
   String[] getMasterCoprocessors();
 
   /**
-   * Get the current compaction state of a table or region. It could be in a major compaction, a
-   * minor compaction, both, or none.
+   * Get the current compaction state of a table. It could be in a major compaction, a minor
+   * compaction, both, or none.
    *
-   * @param tableNameOrRegionName table or region to major compact
+   * @param tableName table to examine
    * @return the current compaction state
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  AdminProtos.GetRegionInfoResponse.CompactionState getCompactionState(
-      final String tableNameOrRegionName) throws IOException, InterruptedException;
+  AdminProtos.GetRegionInfoResponse.CompactionState getCompactionState(final TableName tableName)
+    throws IOException, InterruptedException;
 
   /**
-   * Get the current compaction state of a table or region. It could be in a major compaction, a
-   * minor compaction, both, or none.
+   * Get the current compaction state of region. It could be in a major compaction, a minor
+   * compaction, both, or none.
    *
-   * @param tableNameOrRegionName table or region to major compact
+   * @param regionName region to examine
    * @return the current compaction state
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  AdminProtos.GetRegionInfoResponse.CompactionState getCompactionState(
-      final byte[] tableNameOrRegionName) throws IOException, InterruptedException;
+  AdminProtos.GetRegionInfoResponse.CompactionState getCompactionStateForRegion(
+    final byte[] regionName) throws IOException, InterruptedException;
 
   /**
    * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
index 5d25c0b..b659e87 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
@@ -269,6 +269,7 @@ public class HBaseAdmin implements Admin {
    * @return True if table exists already.
    * @throws IOException
    */
+  @Override
   public boolean tableExists(final TableName tableName) throws IOException {
     return MetaTableAccessor.tableExists(connection, tableName);
   }
@@ -1466,47 +1467,56 @@ public class HBaseAdmin implements Admin {
   }
 
   /**
-   * Flush a table or an individual region.
-   * Synchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to flush
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
    */
   @Override
+  public void flush(final TableName tableName) throws IOException, InterruptedException {
+    checkTableExists(tableName);
+    if (isTableDisabled(tableName)) {
+      LOG.info("Table is disabled: " + tableName.getNameAsString());
+      return;
+    }
+    execProcedure("flush-table-proc", tableName.getNameAsString(),
+      new HashMap<String, String>());
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void flushRegion(final byte[] regionName) throws IOException, InterruptedException {
+    Pair<HRegionInfo, ServerName> regionServerPair = getRegion(regionName);
+    if (regionServerPair == null) {
+      throw new IllegalArgumentException("Unknown regionname: " + Bytes.toStringBinary(regionName));
+    }
+    if (regionServerPair.getSecond() == null) {
+      throw new NoServerForRegionException(Bytes.toStringBinary(regionName));
+    }
+    flush(regionServerPair.getSecond(), regionServerPair.getFirst());
+  }
+
+  /**
+   * @deprecated Use {@link #flush(org.apache.hadoop.hbase.TableName)} or {@link #flushRegion
+   * (byte[])} instead.
+   */
+  @Deprecated
   public void flush(final String tableNameOrRegionName)
   throws IOException, InterruptedException {
     flush(Bytes.toBytes(tableNameOrRegionName));
   }
 
   /**
-   * Flush a table or an individual region.
-   * Synchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to flush
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * @deprecated Use {@link #flush(org.apache.hadoop.hbase.TableName)} or {@link #flushRegion
+   * (byte[])} instead.
    */
-  @Override
+  @Deprecated
   public void flush(final byte[] tableNameOrRegionName)
   throws IOException, InterruptedException {
-    Pair<HRegionInfo, ServerName> regionServerPair
-      = getRegion(tableNameOrRegionName);
-    if (regionServerPair != null) {
-      if (regionServerPair.getSecond() == null) {
-        throw new NoServerForRegionException(Bytes.toStringBinary(tableNameOrRegionName));
-      } else {
-        flush(regionServerPair.getSecond(), regionServerPair.getFirst());
-      }
-    } else {
-      final TableName tableName = checkTableExists(
-          TableName.valueOf(tableNameOrRegionName));
-      if (isTableDisabled(tableName)) {
-        LOG.info("Table is disabled: " + tableName.getNameAsString());
-        return;
-      }
-      execProcedure("flush-table-proc", tableName.getNameAsString(),
-        new HashMap<String, String>());
+    try {
+      flushRegion(tableNameOrRegionName);
+    } catch (IllegalArgumentException e) {
+      // Unknown region.  Try table.
+      flush(TableName.valueOf(tableNameOrRegionName));
     }
   }
 
@@ -1523,164 +1533,205 @@ public class HBaseAdmin implements Admin {
   }
 
   /**
-   * Compact a table or an individual region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to compact
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
    */
   @Override
+  public void compact(final TableName tableName)
+    throws IOException, InterruptedException {
+    compact(tableName, null, false);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void compactRegion(final byte[] regionName)
+    throws IOException, InterruptedException {
+    compactRegion(regionName, null, false);
+  }
+
+  /**
+   * @deprecated Use {@link #compact(org.apache.hadoop.hbase.TableName)} or {@link #compactRegion
+   * (byte[])} instead.
+   */
+  @Deprecated
   public void compact(final String tableNameOrRegionName)
   throws IOException, InterruptedException {
     compact(Bytes.toBytes(tableNameOrRegionName));
   }
 
   /**
-   * Compact a table or an individual region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to compact
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * @deprecated Use {@link #compact(org.apache.hadoop.hbase.TableName)} or {@link #compactRegion
+   * (byte[])} instead.
    */
-  @Override
+  @Deprecated
   public void compact(final byte[] tableNameOrRegionName)
   throws IOException, InterruptedException {
-    compact(tableNameOrRegionName, null, false);
+    try {
+      compactRegion(tableNameOrRegionName, null, false);
+    } catch (IllegalArgumentException e) {
+      compact(TableName.valueOf(tableNameOrRegionName), null, false);
+    }
   }
 
   /**
-   * Compact a column family within a table or region.
-   * Asynchronous operation.
-   *
-   * @param tableOrRegionName table or region to compact
-   * @param columnFamily column family within a table or region
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
    */
   @Override
+  public void compact(final TableName tableName, final byte[] columnFamily)
+    throws IOException, InterruptedException {
+    compact(tableName, columnFamily, false);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void compactRegion(final byte[] regionName, final byte[] columnFamily)
+    throws IOException, InterruptedException {
+    compactRegion(regionName, columnFamily, false);
+  }
+
+  /**
+   * @deprecated Use {@link #compact(org.apache.hadoop.hbase.TableName)} or {@link #compactRegion
+   * (byte[], byte[])} instead.
+   */
+  @Deprecated
   public void compact(String tableOrRegionName, String columnFamily)
     throws IOException,  InterruptedException {
     compact(Bytes.toBytes(tableOrRegionName), Bytes.toBytes(columnFamily));
   }
 
   /**
-   * Compact a column family within a table or region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to compact
-   * @param columnFamily column family within a table or region
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * @deprecated Use {@link #compact(org.apache.hadoop.hbase.TableName)} or {@link #compactRegion
+   * (byte[], byte[])} instead.
    */
-  @Override
+  @Deprecated
   public void compact(final byte[] tableNameOrRegionName, final byte[] columnFamily)
   throws IOException, InterruptedException {
-    compact(tableNameOrRegionName, columnFamily, false);
+    try {
+      compactRegion(tableNameOrRegionName, columnFamily, false);
+    } catch (IllegalArgumentException e) {
+      // Bad region, try table
+      compact(TableName.valueOf(tableNameOrRegionName), columnFamily, false);
+    }
   }
 
   /**
-   * Major compact a table or an individual region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to major compact
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
+   */
+  @Override
+  public void majorCompact(final TableName tableName)
+  throws IOException, InterruptedException {
+    compact(tableName, null, true);
+  }
+
+  /**
+   * {@inheritDoc}
    */
   @Override
+  public void majorCompactRegion(final byte[] regionName)
+  throws IOException, InterruptedException {
+    compactRegion(regionName, null, true);
+  }
+
+  /**
+   * @deprecated Use {@link #majorCompact(org.apache.hadoop.hbase.TableName)} or {@link
+   * #majorCompactRegion(byte[])} instead.
+   */
+  @Deprecated
   public void majorCompact(final String tableNameOrRegionName)
   throws IOException, InterruptedException {
     majorCompact(Bytes.toBytes(tableNameOrRegionName));
   }
 
   /**
-   * Major compact a table or an individual region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to major compact
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * @deprecated Use {@link #majorCompact(org.apache.hadoop.hbase.TableName)} or {@link
+   * #majorCompactRegion(byte[])} instead.
    */
-  @Override
+  @Deprecated
   public void majorCompact(final byte[] tableNameOrRegionName)
   throws IOException, InterruptedException {
-    compact(tableNameOrRegionName, null, true);
+    try {
+      compactRegion(tableNameOrRegionName, null, true);
+    } catch (IllegalArgumentException e) {
+      // Invalid region, try table
+      compact(TableName.valueOf(tableNameOrRegionName), null, true);
+    }
   }
 
   /**
-   * Major compact a column family within a table or region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to major compact
-   * @param columnFamily column family within a table or region
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
    */
   @Override
-  public void majorCompact(final String tableNameOrRegionName,
-    final String columnFamily) throws IOException, InterruptedException {
-    majorCompact(Bytes.toBytes(tableNameOrRegionName),
-      Bytes.toBytes(columnFamily));
+  public void majorCompact(final TableName tableName, final byte[] columnFamily)
+  throws IOException, InterruptedException {
+    compact(tableName, columnFamily, true);
   }
 
   /**
-   * Major compact a column family within a table or region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to major compact
-   * @param columnFamily column family within a table or region
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
    */
   @Override
-  public void majorCompact(final byte[] tableNameOrRegionName,
-    final byte[] columnFamily) throws IOException, InterruptedException {
-    compact(tableNameOrRegionName, columnFamily, true);
+  public void majorCompactRegion(final byte[] regionName, final byte[] columnFamily)
+  throws IOException, InterruptedException {
+    compactRegion(regionName, columnFamily, true);
   }
 
   /**
-   * Compact a table or an individual region.
+   * @deprecated Use {@link #majorCompact(org.apache.hadoop.hbase.TableName,
+   * byte[])} or {@link #majorCompactRegion(byte[], byte[])} instead.
+   */
+  @Deprecated
+  public void majorCompact(final String tableNameOrRegionName, final String columnFamily)
+  throws IOException, InterruptedException {
+    majorCompact(Bytes.toBytes(tableNameOrRegionName), Bytes.toBytes(columnFamily));
+  }
+
+  /**
+   * @deprecated Use {@link #majorCompact(org.apache.hadoop.hbase.TableName,
+   * byte[])} or {@link #majorCompactRegion(byte[], byte[])} instead.
+   */
+  @Deprecated
+  public void majorCompact(final byte[] tableNameOrRegionName, final byte[] columnFamily)
+  throws IOException, InterruptedException {
+    try {
+      compactRegion(tableNameOrRegionName, columnFamily, true);
+    } catch (IllegalArgumentException e) {
+      // Invalid region, try table
+      compact(TableName.valueOf(tableNameOrRegionName), columnFamily, true);
+    }
+  }
+
+  /**
+   * Compact a table.
    * Asynchronous operation.
    *
-   * @param tableNameOrRegionName table or region to compact
+   * @param tableName table or region to compact
    * @param columnFamily column family within a table or region
    * @param major True if we are to do a major compaction.
    * @throws IOException if a remote or network exception occurs
    * @throws InterruptedException
    */
-  private void compact(final byte[] tableNameOrRegionName,
-    final byte[] columnFamily,final boolean major)
+  private void compact(final TableName tableName, final byte[] columnFamily,final boolean major)
   throws IOException, InterruptedException {
     ZooKeeperWatcher zookeeper = null;
     try {
-      Pair<HRegionInfo, ServerName> regionServerPair
-        = getRegion(tableNameOrRegionName);
-      if (regionServerPair != null) {
-        if (regionServerPair.getSecond() == null) {
-          throw new NoServerForRegionException(Bytes.toStringBinary(tableNameOrRegionName));
-        } else {
-          compact(regionServerPair.getSecond(), regionServerPair.getFirst(), major, columnFamily);
-        }
-      } else {
-        final TableName tableName =
-            checkTableExists(TableName.valueOf(tableNameOrRegionName));
-        zookeeper = new ZooKeeperWatcher(conf, ZK_IDENTIFIER_PREFIX + connection.toString(),
-            new ThrowableAbortable());
-        List<Pair<HRegionInfo, ServerName>> pairs =
-          MetaTableAccessor.getTableRegionsAndLocations(zookeeper, connection,
-            tableName);
-        for (Pair<HRegionInfo, ServerName> pair: pairs) {
-          if (pair.getFirst().isOffline()) continue;
-          if (pair.getSecond() == null) continue;
-          try {
-            compact(pair.getSecond(), pair.getFirst(), major, columnFamily);
-          } catch (NotServingRegionException e) {
-            if (LOG.isDebugEnabled()) {
-              LOG.debug("Trying to" + (major ? " major" : "") + " compact " +
-                pair.getFirst() + ": " +
-                StringUtils.stringifyException(e));
-            }
+      checkTableExists(tableName);
+      zookeeper = new ZooKeeperWatcher(conf, ZK_IDENTIFIER_PREFIX + connection.toString(),
+          new ThrowableAbortable());
+      List<Pair<HRegionInfo, ServerName>> pairs =
+        MetaTableAccessor.getTableRegionsAndLocations(zookeeper, connection, tableName);
+      for (Pair<HRegionInfo, ServerName> pair: pairs) {
+        if (pair.getFirst().isOffline()) continue;
+        if (pair.getSecond() == null) continue;
+        try {
+          compact(pair.getSecond(), pair.getFirst(), major, columnFamily);
+        } catch (NotServingRegionException e) {
+          if (LOG.isDebugEnabled()) {
+            LOG.debug("Trying to" + (major ? " major" : "") + " compact " +
+              pair.getFirst() + ": " +
+              StringUtils.stringifyException(e));
           }
         }
       }
@@ -1691,6 +1742,28 @@ public class HBaseAdmin implements Admin {
     }
   }
 
+  /**
+   * Compact an individual region.
+   * Asynchronous operation.
+   *
+   * @param regionName region to compact
+   * @param columnFamily column family within a table or region
+   * @param major True if we are to do a major compaction.
+   * @throws IOException if a remote or network exception occurs
+   * @throws InterruptedException
+   */
+  private void compactRegion(final byte[] regionName, final byte[] columnFamily,final boolean major)
+  throws IOException, InterruptedException {
+    Pair<HRegionInfo, ServerName> regionServerPair = getRegion(regionName);
+    if (regionServerPair == null) {
+      throw new IllegalArgumentException("Invalid region: " + Bytes.toStringBinary(regionName));
+    }
+    if (regionServerPair.getSecond() == null) {
+      throw new NoServerForRegionException(Bytes.toStringBinary(regionName));
+    }
+    compact(regionServerPair.getSecond(), regionServerPair.getFirst(), major, columnFamily);
+  }
+
   private void compact(final ServerName sn, final HRegionInfo hri,
       final boolean major, final byte [] family)
   throws IOException {
@@ -1726,7 +1799,7 @@ public class HBaseAdmin implements Admin {
     try {
       MoveRegionRequest request =
         RequestConverter.buildMoveRegionRequest(encodedRegionName, destServerName);
-      stub.moveRegion(null,request);
+      stub.moveRegion(null, request);
     } catch (ServiceException se) {
       IOException ioe = ProtobufUtil.getRemoteException(se);
       if (ioe instanceof HBaseIOException) {
@@ -1785,7 +1858,7 @@ public class HBaseAdmin implements Admin {
       public Void call(int callTimeout) throws ServiceException {
         UnassignRegionRequest request =
           RequestConverter.buildUnassignRegionRequest(toBeUnassigned, force);
-        master.unassignRegion(null,request);
+        master.unassignRegion(null, request);
         return null;
       }
     });
@@ -1858,7 +1931,7 @@ public class HBaseAdmin implements Admin {
   throws MasterNotRunningException, ZooKeeperConnectionException, ServiceException {
     MasterKeepAliveConnection stub = connection.getKeepAliveMasterService();
     try {
-      return stub.balance(null,RequestConverter.buildBalanceRequest()).getBalancerRan();
+      return stub.balance(null, RequestConverter.buildBalanceRequest()).getBalancerRan();
     } finally {
       stub.close();
     }
@@ -1877,7 +1950,7 @@ public class HBaseAdmin implements Admin {
     MasterKeepAliveConnection stub = connection.getKeepAliveMasterService();
     try {
       return stub.enableCatalogJanitor(null,
-          RequestConverter.buildEnableCatalogJanitorRequest(enable)).getPrevValue();
+        RequestConverter.buildEnableCatalogJanitorRequest(enable)).getPrevValue();
     } finally {
       stub.close();
     }
@@ -1894,7 +1967,7 @@ public class HBaseAdmin implements Admin {
     MasterKeepAliveConnection stub = connection.getKeepAliveMasterService();
     try {
       return stub.runCatalogScan(null,
-          RequestConverter.buildCatalogScanRequest()).getScanResult();
+        RequestConverter.buildCatalogScanRequest()).getScanResult();
     } finally {
       stub.close();
     }
@@ -1910,7 +1983,7 @@ public class HBaseAdmin implements Admin {
     MasterKeepAliveConnection stub = connection.getKeepAliveMasterService();
     try {
       return stub.isCatalogJanitorEnabled(null,
-          RequestConverter.buildIsCatalogJanitorEnabledRequest()).getValue();
+        RequestConverter.buildIsCatalogJanitorEnabledRequest()).getValue();
     } finally {
       stub.close();
     }
@@ -1953,85 +2026,112 @@ public class HBaseAdmin implements Admin {
   }
 
   /**
-   * Split a table or an individual region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table or region to split
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * {@inheritDoc}
    */
   @Override
+  public void split(final TableName tableName)
+    throws IOException, InterruptedException {
+    split(tableName, null);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void splitRegion(final byte[] regionName)
+    throws IOException, InterruptedException {
+    splitRegion(regionName, null);
+  }
+
+  /**
+   * @deprecated Use {@link #split(org.apache.hadoop.hbase.TableName)} or {@link #splitRegion
+   * (byte[])} instead.
+   */
+  @Deprecated
   public void split(final String tableNameOrRegionName)
   throws IOException, InterruptedException {
     split(Bytes.toBytes(tableNameOrRegionName));
   }
 
   /**
-   * Split a table or an individual region.  Implicitly finds an optimal split
-   * point.  Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table to region to split
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
+   * @deprecated Use {@link #split(org.apache.hadoop.hbase.TableName)} or {@link #splitRegion
+   * (byte[])} instead.
    */
-  @Override
+  @Deprecated
   public void split(final byte[] tableNameOrRegionName)
   throws IOException, InterruptedException {
     split(tableNameOrRegionName, null);
   }
 
+  /**
+   * {@inheritDoc}
+   */
   @Override
+  public void split(final TableName tableName, final byte [] splitPoint)
+  throws IOException, InterruptedException {
+    ZooKeeperWatcher zookeeper = null;
+    try {
+      checkTableExists(tableName);
+      zookeeper = new ZooKeeperWatcher(conf, ZK_IDENTIFIER_PREFIX + connection.toString(),
+        new ThrowableAbortable());
+      List<Pair<HRegionInfo, ServerName>> pairs =
+        MetaTableAccessor.getTableRegionsAndLocations(zookeeper, connection, tableName);
+      for (Pair<HRegionInfo, ServerName> pair: pairs) {
+        // May not be a server for a particular row
+        if (pair.getSecond() == null) continue;
+        HRegionInfo r = pair.getFirst();
+        // check for parents
+        if (r.isSplitParent()) continue;
+        // if a split point given, only split that particular region
+        if (splitPoint != null && !r.containsRow(splitPoint)) continue;
+        // call out to region server to do split now
+        split(pair.getSecond(), pair.getFirst(), splitPoint);
+      }
+    } finally {
+      if (zookeeper != null) {
+        zookeeper.close();
+      }
+    }
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void splitRegion(final byte[] regionName, final byte [] splitPoint)
+  throws IOException, InterruptedException {
+    Pair<HRegionInfo, ServerName> regionServerPair = getRegion(regionName);
+    if (regionServerPair == null) {
+      throw new IllegalArgumentException("Invalid region: " + Bytes.toStringBinary(regionName));
+    }
+    if (regionServerPair.getSecond() == null) {
+      throw new NoServerForRegionException(Bytes.toStringBinary(regionName));
+    }
+    split(regionServerPair.getSecond(), regionServerPair.getFirst(), splitPoint);
+  }
+
+  /**
+   * @deprecated Use {@link #split(org.apache.hadoop.hbase.TableName,
+   * byte[])} or {@link #splitRegion(byte[], byte[])} instead.
+   */
+  @Deprecated
   public void split(final String tableNameOrRegionName,
     final String splitPoint) throws IOException, InterruptedException {
     split(Bytes.toBytes(tableNameOrRegionName), Bytes.toBytes(splitPoint));
   }
 
   /**
-   * Split a table or an individual region.
-   * Asynchronous operation.
-   *
-   * @param tableNameOrRegionName table to region to split
-   * @param splitPoint the explicit position to split on
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException interrupt exception occurred
+   * @deprecated Use {@link #split(org.apache.hadoop.hbase.TableName,
+   * byte[])} or {@link #splitRegion(byte[], byte[])} instead.
    */
-  @Override
+  @Deprecated
   public void split(final byte[] tableNameOrRegionName,
       final byte [] splitPoint) throws IOException, InterruptedException {
-    ZooKeeperWatcher zookeeper = null;
     try {
-      Pair<HRegionInfo, ServerName> regionServerPair
-        = getRegion(tableNameOrRegionName);
-      if (regionServerPair != null) {
-        if (regionServerPair.getSecond() == null) {
-            throw new NoServerForRegionException(Bytes.toStringBinary(tableNameOrRegionName));
-        } else {
-          split(regionServerPair.getSecond(), regionServerPair.getFirst(), splitPoint);
-        }
-      } else {
-        final TableName tableName =
-            checkTableExists(TableName.valueOf(tableNameOrRegionName));
-        zookeeper = new ZooKeeperWatcher(conf, ZK_IDENTIFIER_PREFIX + connection.toString(),
-            new ThrowableAbortable());
-        List<Pair<HRegionInfo, ServerName>> pairs =
-          MetaTableAccessor.getTableRegionsAndLocations(zookeeper, connection,
-            tableName);
-        for (Pair<HRegionInfo, ServerName> pair: pairs) {
-          // May not be a server for a particular row
-          if (pair.getSecond() == null) continue;
-          HRegionInfo r = pair.getFirst();
-          // check for parents
-          if (r.isSplitParent()) continue;
-          // if a split point given, only split that particular region
-          if (splitPoint != null && !r.containsRow(splitPoint)) continue;
-          // call out to region server to do split now
-          split(pair.getSecond(), pair.getFirst(), splitPoint);
-        }
-      }
-    } finally {
-      if (zookeeper != null) {
-        zookeeper.close();
-      }
+      splitRegion(tableNameOrRegionName, splitPoint);
+    } catch (IllegalArgumentException e) {
+      // Bad region, try table
+      split(TableName.valueOf(tableNameOrRegionName), splitPoint);
     }
   }
 
@@ -2083,24 +2183,24 @@ public class HBaseAdmin implements Admin {
   }
 
   /**
-   * @param tableNameOrRegionName Name of a table or name of a region.
-   * @return a pair of HRegionInfo and ServerName if <code>tableNameOrRegionName</code> is
+   * @param regionName Name of a region.
+   * @return a pair of HRegionInfo and ServerName if <code>regionName</code> is
    *  a verified region name (we call {@link
    *  MetaTableAccessor#getRegion(HConnection, byte[])}
    *  else null.
-   * Throw an exception if <code>tableNameOrRegionName</code> is null.
+   * Throw IllegalArgumentException if <code>regionName</code> is null.
    * @throws IOException
    */
-  Pair<HRegionInfo, ServerName> getRegion(final byte[] tableNameOrRegionName) throws IOException {
-    if (tableNameOrRegionName == null) {
+  Pair<HRegionInfo, ServerName> getRegion(final byte[] regionName) throws IOException {
+    if (regionName == null) {
       throw new IllegalArgumentException("Pass a table name or region name");
     }
     Pair<HRegionInfo, ServerName> pair =
-      MetaTableAccessor.getRegion(connection, tableNameOrRegionName);
+      MetaTableAccessor.getRegion(connection, regionName);
     if (pair == null) {
       final AtomicReference<Pair<HRegionInfo, ServerName>> result =
         new AtomicReference<Pair<HRegionInfo, ServerName>>(null);
-      final String encodedName = Bytes.toString(tableNameOrRegionName);
+      final String encodedName = Bytes.toString(regionName);
       MetaScannerVisitor visitor = new MetaScannerVisitorBase() {
         @Override
         public boolean processRow(Result data) throws IOException {
@@ -2187,7 +2287,7 @@ public class HBaseAdmin implements Admin {
     executeCallable(new MasterCallable<Void>(getConnection()) {
       @Override
       public Void call(int callTimeout) throws ServiceException {
-        master.stopMaster(null,StopMasterRequest.newBuilder().build());
+        master.stopMaster(null, StopMasterRequest.newBuilder().build());
         return null;
       }
     });
@@ -2226,7 +2326,7 @@ public class HBaseAdmin implements Admin {
       @Override
       public ClusterStatus call(int callTimeout) throws ServiceException {
         GetClusterStatusRequest req = RequestConverter.buildGetClusterStatusRequest();
-        return ClusterStatus.convert(master.getClusterStatus(null,req).getClusterStatus());
+        return ClusterStatus.convert(master.getClusterStatus(null, req).getClusterStatus());
       }
     });
   }
@@ -2257,8 +2357,9 @@ public class HBaseAdmin implements Admin {
       public Void call(int callTimeout) throws Exception {
         master.createNamespace(null,
           CreateNamespaceRequest.newBuilder()
-                .setNamespaceDescriptor(ProtobufUtil
-                    .toProtoNamespaceDescriptor(descriptor)).build());
+            .setNamespaceDescriptor(ProtobufUtil
+              .toProtoNamespaceDescriptor(descriptor)).build()
+        );
         return null;
       }
     });
@@ -2517,8 +2618,8 @@ public class HBaseAdmin implements Admin {
    * @throws IOException if a remote or network exception occurs
    * @throws FailedLogCloseException
    */
- @Override
-public synchronized  byte[][] rollHLogWriter(String serverName)
+  @Override
+  public synchronized  byte[][] rollHLogWriter(String serverName)
       throws IOException, FailedLogCloseException {
     ServerName sn = ServerName.valueOf(serverName);
     AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
@@ -2548,96 +2649,60 @@ public synchronized  byte[][] rollHLogWriter(String serverName)
   }
 
   /**
-   * Get the current compaction state of a table or region.
-   * It could be in a major compaction, a minor compaction, both, or none.
-   *
-   * @param tableNameOrRegionName table or region to major compact
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
-   * @return the current compaction state
-   */
-  @Override
-  public CompactionState getCompactionState(final String tableNameOrRegionName)
-      throws IOException, InterruptedException {
-    return getCompactionState(Bytes.toBytes(tableNameOrRegionName));
-  }
-
-  /**
-   * Get the current compaction state of a table or region.
-   * It could be in a major compaction, a minor compaction, both, or none.
-   *
-   * @param tableNameOrRegionName table or region to major compact
-   * @throws IOException if a remote or network exception occurs
-   * @throws InterruptedException
-   * @return the current compaction state
+   * {@inheritDoc}
    */
   @Override
-  public CompactionState getCompactionState(final byte[] tableNameOrRegionName)
-      throws IOException, InterruptedException {
+  public CompactionState getCompactionState(final TableName tableName)
+  throws IOException, InterruptedException {
     CompactionState state = CompactionState.NONE;
     ZooKeeperWatcher zookeeper =
       new ZooKeeperWatcher(conf, ZK_IDENTIFIER_PREFIX + connection.toString(),
         new ThrowableAbortable());
     try {
-      Pair<HRegionInfo, ServerName> regionServerPair = getRegion(tableNameOrRegionName);
-      if (regionServerPair != null) {
-        if (regionServerPair.getSecond() == null) {
-          throw new NoServerForRegionException(Bytes.toStringBinary(tableNameOrRegionName));
-        } else {
-          ServerName sn = regionServerPair.getSecond();
+      checkTableExists(tableName);
+      List<Pair<HRegionInfo, ServerName>> pairs =
+        MetaTableAccessor.getTableRegionsAndLocations(zookeeper, connection, tableName);
+      for (Pair<HRegionInfo, ServerName> pair: pairs) {
+        if (pair.getFirst().isOffline()) continue;
+        if (pair.getSecond() == null) continue;
+        try {
+          ServerName sn = pair.getSecond();
           AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
           GetRegionInfoRequest request = RequestConverter.buildGetRegionInfoRequest(
-            regionServerPair.getFirst().getRegionName(), true);
+            pair.getFirst().getRegionName(), true);
           GetRegionInfoResponse response = admin.getRegionInfo(null, request);
-          return response.getCompactionState();
-        }
-      } else {
-        final TableName tableName =
-            checkTableExists(TableName.valueOf(tableNameOrRegionName));
-        List<Pair<HRegionInfo, ServerName>> pairs =
-          MetaTableAccessor.getTableRegionsAndLocations(zookeeper, connection, tableName);
-        for (Pair<HRegionInfo, ServerName> pair: pairs) {
-          if (pair.getFirst().isOffline()) continue;
-          if (pair.getSecond() == null) continue;
-          try {
-            ServerName sn = pair.getSecond();
-            AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
-            GetRegionInfoRequest request = RequestConverter.buildGetRegionInfoRequest(
-              pair.getFirst().getRegionName(), true);
-            GetRegionInfoResponse response = admin.getRegionInfo(null, request);
-            switch (response.getCompactionState()) {
-            case MAJOR_AND_MINOR:
+          switch (response.getCompactionState()) {
+          case MAJOR_AND_MINOR:
+            return CompactionState.MAJOR_AND_MINOR;
+          case MAJOR:
+            if (state == CompactionState.MINOR) {
               return CompactionState.MAJOR_AND_MINOR;
-            case MAJOR:
-              if (state == CompactionState.MINOR) {
-                return CompactionState.MAJOR_AND_MINOR;
-              }
-              state = CompactionState.MAJOR;
-              break;
-            case MINOR:
-              if (state == CompactionState.MAJOR) {
-                return CompactionState.MAJOR_AND_MINOR;
-              }
-              state = CompactionState.MINOR;
-              break;
-            case NONE:
-              default: // nothing, continue
             }
-          } catch (NotServingRegionException e) {
-            if (LOG.isDebugEnabled()) {
-              LOG.debug("Trying to get compaction state of " +
-                pair.getFirst() + ": " +
-                StringUtils.stringifyException(e));
+            state = CompactionState.MAJOR;
+            break;
+          case MINOR:
+            if (state == CompactionState.MAJOR) {
+              return CompactionState.MAJOR_AND_MINOR;
             }
-          } catch (RemoteException e) {
-            if (e.getMessage().indexOf(NotServingRegionException.class.getName()) >= 0) {
-              if (LOG.isDebugEnabled()) {
-                LOG.debug("Trying to get compaction state of " + pair.getFirst() + ": "
-                    + StringUtils.stringifyException(e));
-              }
-            } else {
-              throw e;
+            state = CompactionState.MINOR;
+            break;
+          case NONE:
+          default: // nothing, continue
+          }
+        } catch (NotServingRegionException e) {
+          if (LOG.isDebugEnabled()) {
+            LOG.debug("Trying to get compaction state of " +
+              pair.getFirst() + ": " +
+              StringUtils.stringifyException(e));
+          }
+        } catch (RemoteException e) {
+          if (e.getMessage().indexOf(NotServingRegionException.class.getName()) >= 0) {
+            if (LOG.isDebugEnabled()) {
+              LOG.debug("Trying to get compaction state of " + pair.getFirst() + ": "
+                + StringUtils.stringifyException(e));
             }
+          } else {
+            throw e;
           }
         }
       }
@@ -2650,6 +2715,56 @@ public synchronized  byte[][] rollHLogWriter(String serverName)
   }
 
   /**
+   * {@inheritDoc}
+   */
+  @Override
+  public CompactionState getCompactionStateForRegion(final byte[] regionName)
+  throws IOException, InterruptedException {
+    try {
+      Pair<HRegionInfo, ServerName> regionServerPair = getRegion(regionName);
+      if (regionServerPair == null) {
+        throw new IllegalArgumentException("Invalid region: " + Bytes.toStringBinary(regionName));
+      }
+      if (regionServerPair.getSecond() == null) {
+        throw new NoServerForRegionException(Bytes.toStringBinary(regionName));
+      }
+      ServerName sn = regionServerPair.getSecond();
+      AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
+      GetRegionInfoRequest request = RequestConverter.buildGetRegionInfoRequest(
+        regionServerPair.getFirst().getRegionName(), true);
+      GetRegionInfoResponse response = admin.getRegionInfo(null, request);
+      return response.getCompactionState();
+    } catch (ServiceException se) {
+      throw ProtobufUtil.getRemoteException(se);
+    }
+  }
+
+  /**
+   * @deprecated Use {@link #getCompactionState(org.apache.hadoop.hbase.TableName)} or {@link
+   * #getCompactionStateForRegion(byte[])} instead.
+   */
+  @Deprecated
+  public CompactionState getCompactionState(final String tableNameOrRegionName)
+  throws IOException, InterruptedException {
+    return getCompactionState(Bytes.toBytes(tableNameOrRegionName));
+  }
+
+  /**
+   * @deprecated Use {@link #getCompactionState(org.apache.hadoop.hbase.TableName)} or {@link
+   * #getCompactionStateForRegion(byte[])} instead.
+   */
+  @Deprecated
+  public CompactionState getCompactionState(final byte[] tableNameOrRegionName)
+  throws IOException, InterruptedException {
+    try {
+      return getCompactionStateForRegion(tableNameOrRegionName);
+    } catch (IllegalArgumentException e) {
+      // Invalid region, try table
+      return getCompactionState(TableName.valueOf(tableNameOrRegionName));
+    }
+  }
+
+  /**
    * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be
    * taken. If the table is disabled, an offline snapshot is taken.
    * <p>
@@ -2726,7 +2841,7 @@ public synchronized  byte[][] rollHLogWriter(String serverName)
                        final byte[] tableName) throws IOException,
       SnapshotCreationException, IllegalArgumentException {
     snapshot(Bytes.toString(snapshotName), TableName.valueOf(tableName),
-        SnapshotDescription.Type.FLUSH);
+      SnapshotDescription.Type.FLUSH);
   }
 
   /**
@@ -3398,7 +3513,8 @@ public synchronized  byte[][] rollHLogWriter(String serverName)
       public Void call(int callTimeout) throws ServiceException {
         master.deleteSnapshot(null,
           DeleteSnapshotRequest.newBuilder().
-            setSnapshot(SnapshotDescription.newBuilder().setName(snapshotName).build()).build());
+            setSnapshot(SnapshotDescription.newBuilder().setName(snapshotName).build()).build()
+        );
         return null;
       }
     });

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestBase.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestBase.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestBase.java
index 85bc5db..085c252 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestBase.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestBase.java
@@ -189,7 +189,7 @@ public abstract class IntegrationTestBase extends AbstractHBaseTool {
 
   public abstract int runTestFromCommandLine() throws Exception;
 
-  public abstract String getTablename();
+  public abstract TableName getTablename();
 
   protected abstract Set<String> getColumnFamilies();
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngest.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngest.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngest.java
index 0994b8f..7ac0d32 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngest.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngest.java
@@ -115,9 +115,10 @@ public class IntegrationTestIngest extends IntegrationTestBase {
   }
 
   @Override
-  public String getTablename() {
+  public TableName getTablename() {
     String clazz = this.getClass().getSimpleName();
-    return conf.get(String.format("%s.%s", clazz, LoadTestTool.OPT_TABLE_NAME), clazz);
+    return TableName.valueOf(
+      conf.get(String.format("%s.%s", clazz, LoadTestTool.OPT_TABLE_NAME), clazz));
   }
 
   @Override
@@ -126,8 +127,8 @@ public class IntegrationTestIngest extends IntegrationTestBase {
   }
 
   private void deleteTableIfNecessary() throws IOException {
-    if (util.getHBaseAdmin().tableExists(TableName.valueOf(getTablename()))) {
-      util.deleteTable(Bytes.toBytes(getTablename()));
+    if (util.getHBaseAdmin().tableExists(getTablename())) {
+      util.deleteTable(getTablename());
     }
   }
 
@@ -178,7 +179,7 @@ public class IntegrationTestIngest extends IntegrationTestBase {
   protected String[] getArgsForLoadTestToolInitTable() {
     List<String> args = new ArrayList<String>();
     args.add("-tn");
-    args.add(getTablename());
+    args.add(getTablename().getNameAsString());
     // pass all remaining args from conf with keys <test class name>.<load test tool arg>
     String clazz = this.getClass().getSimpleName();
     for (String arg : LOAD_TEST_TOOL_INIT_ARGS) {
@@ -196,7 +197,7 @@ public class IntegrationTestIngest extends IntegrationTestBase {
       long numKeys) {
     List<String> args = new ArrayList<String>();
     args.add("-tn");
-    args.add(getTablename());
+    args.add(getTablename().getNameAsString());
     args.add(mode);
     args.add(modeSpecificArg);
     args.add("-start_key");

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngestWithEncryption.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngestWithEncryption.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngestWithEncryption.java
index 72c5689..f4246a2 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngestWithEncryption.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestIngestWithEncryption.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.Waiter.Predicate;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.io.crypto.KeyProviderForTesting;
 import org.apache.hadoop.hbase.io.hfile.HFile;
 import org.apache.hadoop.hbase.io.hfile.HFileReaderV3;
@@ -30,7 +29,6 @@ import org.apache.hadoop.hbase.io.hfile.HFileWriterV3;
 import org.apache.hadoop.hbase.regionserver.wal.HLog;
 import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader;
 import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter;
-import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.util.ToolRunner;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
@@ -81,18 +79,18 @@ public class IntegrationTestIngestWithEncryption extends IntegrationTestIngest {
     // encryption features enabled.
     final Admin admin = util.getHBaseAdmin();
     HTableDescriptor tableDescriptor =
-        new HTableDescriptor(admin.getTableDescriptor(TableName.valueOf(getTablename())));
+        new HTableDescriptor(admin.getTableDescriptor(getTablename()));
     for (HColumnDescriptor columnDescriptor: tableDescriptor.getColumnFamilies()) {
       columnDescriptor.setEncryptionType("AES");
       LOG.info("Updating CF schema for " + getTablename() + "." +
         columnDescriptor.getNameAsString());
-      admin.disableTable(TableName.valueOf(getTablename()));
-      admin.modifyColumn(TableName.valueOf(getTablename()), columnDescriptor);
-      admin.enableTable(TableName.valueOf(getTablename()));
+      admin.disableTable(getTablename());
+      admin.modifyColumn(getTablename(), columnDescriptor);
+      admin.enableTable(getTablename());
       util.waitFor(30000, 1000, true, new Predicate<IOException>() {
         @Override
         public boolean evaluate() throws IOException {
-          return admin.isTableAvailable(TableName.valueOf(getTablename()));
+          return admin.isTableAvailable(getTablename());
         }
       });
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.java
index 999ed51..160dc66 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.java
@@ -30,7 +30,6 @@ import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
 import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;
 import org.apache.hadoop.hbase.chaos.policies.Policy;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.ipc.RpcClient;
 import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;
 import org.apache.hadoop.mapreduce.Counters;
@@ -166,7 +165,7 @@ public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {
   public void setUpMonkey() throws Exception {
     Policy p = new PeriodicRandomActionPolicy(sleepTime,
       new RestartRsHoldingTableAction(sleepTime, tableName.getNameAsString()),
-      new MoveRandomRegionOfTableAction(tableName.getNameAsString()));
+      new MoveRandomRegionOfTableAction(tableName));
     this.monkey = new PolicyBasedChaosMonkey(util, p);
     // don't start monkey right away
   }
@@ -213,8 +212,8 @@ public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {
   }
 
   @Override
-  public String getTablename() {
-    return tableName.getNameAsString();
+  public TableName getTablename() {
+    return tableName;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/AddColumnAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/AddColumnAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/AddColumnAction.java
index aa29b78..e7d2e12 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/AddColumnAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/AddColumnAction.java
@@ -25,8 +25,6 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action the adds a column family to a table.
@@ -35,8 +33,8 @@ public class AddColumnAction extends Action {
   private final TableName tableName;
   private Admin admin;
 
-  public AddColumnAction(String tableName) {
-    this.tableName = TableName.valueOf(tableName);
+  public AddColumnAction(TableName tableName) {
+    this.tableName = tableName;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.java
index 62db382..5bd7444 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.java
@@ -25,9 +25,7 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.regionserver.BloomType;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action that tries to adjust the bloom filter setting on all the columns of a
@@ -37,13 +35,13 @@ public class ChangeBloomFilterAction extends Action {
   private final long sleepTime;
   private final TableName tableName;
 
-  public ChangeBloomFilterAction(String tableName) {
+  public ChangeBloomFilterAction(TableName tableName) {
     this(-1, tableName);
   }
 
-  public ChangeBloomFilterAction(int sleepTime, String tableName) {
+  public ChangeBloomFilterAction(int sleepTime, TableName tableName) {
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeCompressionAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeCompressionAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeCompressionAction.java
index 07deb3d..f048b58 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeCompressionAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeCompressionAction.java
@@ -25,23 +25,19 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action that changes the compression algorithm on a column family from a list of tables.
  */
 public class ChangeCompressionAction extends Action {
   private final TableName tableName;
-  private final String tableNameString;
 
   private Admin admin;
   private Random random;
 
-  public ChangeCompressionAction(String tableName) {
-    tableNameString = tableName;
-    this.tableName = TableName.valueOf(tableName);
+  public ChangeCompressionAction(TableName tableName) {
+    this.tableName = tableName;
     this.random = new Random();
   }
 
@@ -69,7 +65,7 @@ public class ChangeCompressionAction extends Action {
     Algorithm algo = possibleAlgos[random.nextInt(possibleAlgos.length)];
 
     LOG.debug("Performing action: Changing compression algorithms on "
-      + tableNameString + " to " + algo);
+      + tableName.getNameAsString() + " to " + algo);
     for (HColumnDescriptor descriptor : columnDescriptors) {
       if (random.nextBoolean()) {
         descriptor.setCompactionCompressionType(algo);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeEncodingAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeEncodingAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeEncodingAction.java
index e44c132..4833d70 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeEncodingAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeEncodingAction.java
@@ -25,9 +25,7 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action that changes the encoding on a column family from a list of tables.
@@ -38,8 +36,8 @@ public class ChangeEncodingAction extends Action {
   private Admin admin;
   private Random random;
 
-  public ChangeEncodingAction(String tableName) {
-    this.tableName = TableName.valueOf(tableName);
+  public ChangeEncodingAction(TableName tableName) {
+    this.tableName = tableName;
     this.random = new Random();
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java
index 48799e6..0faa8a3 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java
@@ -25,8 +25,6 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action that changes the number of versions on a column family from a list of tables.
@@ -35,14 +33,12 @@ import org.apache.hadoop.hbase.util.Bytes;
  */
 public class ChangeVersionsAction extends Action {
   private final TableName tableName;
-  private final String tableNameString;
 
   private Admin admin;
   private Random random;
 
-  public ChangeVersionsAction(String tableName) {
-    tableNameString = tableName;
-    this.tableName = TableName.valueOf(tableName);
+  public ChangeVersionsAction(TableName tableName) {
+    this.tableName = tableName;
     this.random = new Random();
   }
 
@@ -66,7 +62,7 @@ public class ChangeVersionsAction extends Action {
       descriptor.setMaxVersions(versions);
       descriptor.setMinVersions(versions);
     }
-    LOG.debug("Performing action: Changing versions on " + tableNameString);
+    LOG.debug("Performing action: Changing versions on " + tableName.getNameAsString());
     admin.modifyTable(tableName, tableDescriptor);
   }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactRandomRegionOfTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactRandomRegionOfTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactRandomRegionOfTableAction.java
index 410859a..114b511 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactRandomRegionOfTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactRandomRegionOfTableAction.java
@@ -26,8 +26,6 @@ import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Region that queues a compaction of a random region from the table.
@@ -38,15 +36,15 @@ public class CompactRandomRegionOfTableAction extends Action {
   private final TableName tableName;
 
   public CompactRandomRegionOfTableAction(
-      String tableName, float majorRatio) {
+      TableName tableName, float majorRatio) {
     this(-1, tableName, majorRatio);
   }
 
   public CompactRandomRegionOfTableAction(
-      int sleepTime, String tableName, float majorRatio) {
+      int sleepTime, TableName tableName, float majorRatio) {
     this.majorRatio = (int) (100 * majorRatio);
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
   }
 
   @Override
@@ -69,10 +67,10 @@ public class CompactRandomRegionOfTableAction extends Action {
     try {
       if (major) {
         LOG.debug("Major compacting region " + region.getRegionNameAsString());
-        admin.majorCompact(region.getRegionName());
+        admin.majorCompactRegion(region.getRegionName());
       } else {
         LOG.debug("Compacting region " + region.getRegionNameAsString());
-        admin.compact(region.getRegionName());
+        admin.compactRegion(region.getRegionName());
       }
     } catch (Exception ex) {
       LOG.warn("Compaction failed, might be caused by other chaos: " + ex.getMessage());

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactTableAction.java
index 63af0b8..796cc43 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/CompactTableAction.java
@@ -20,29 +20,26 @@ package org.apache.hadoop.hbase.chaos.actions;
 
 import org.apache.commons.lang.math.RandomUtils;
 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.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action that queues a table compaction.
  */
 public class CompactTableAction extends Action {
-  private final byte[] tableNameBytes;
+  private final TableName tableName;
   private final int majorRatio;
   private final long sleepTime;
-  private final String tableName;
 
-  public CompactTableAction(String tableName, float majorRatio) {
+  public CompactTableAction(TableName tableName, float majorRatio) {
     this(-1, tableName, majorRatio);
   }
 
   public CompactTableAction(
-      int sleepTime, String tableName, float majorRatio) {
-    this.tableNameBytes = Bytes.toBytes(tableName);
+      int sleepTime, TableName tableName, float majorRatio) {
+    this.tableName = tableName;
     this.majorRatio = (int) (100 * majorRatio);
     this.sleepTime = sleepTime;
-    this.tableName = tableName;
   }
 
   @Override
@@ -54,9 +51,9 @@ public class CompactTableAction extends Action {
     LOG.info("Performing action: Compact table " + tableName + ", major=" + major);
     try {
       if (major) {
-        admin.majorCompact(tableNameBytes);
+        admin.majorCompact(tableName);
       } else {
-        admin.compact(tableNameBytes);
+        admin.compact(tableName);
       }
     } catch (Exception ex) {
       LOG.warn("Compaction failed, might be caused by other chaos: " + ex.getMessage());

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushRandomRegionOfTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushRandomRegionOfTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushRandomRegionOfTableAction.java
index 671bf2b..c919789 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushRandomRegionOfTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushRandomRegionOfTableAction.java
@@ -25,8 +25,6 @@ import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
 * Action that tries to flush a random region of a table.
@@ -35,13 +33,13 @@ public class FlushRandomRegionOfTableAction extends Action {
   private final long sleepTime;
   private final TableName tableName;
 
-  public FlushRandomRegionOfTableAction(String tableName) {
+  public FlushRandomRegionOfTableAction(TableName tableName) {
    this (-1, tableName);
   }
 
-  public FlushRandomRegionOfTableAction(int sleepTime, String tableName) {
+  public FlushRandomRegionOfTableAction(int sleepTime, TableName tableName) {
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
   }
 
   @Override
@@ -60,7 +58,7 @@ public class FlushRandomRegionOfTableAction extends Action {
       regions.toArray(new HRegionInfo[regions.size()]));
     LOG.debug("Flushing region " + region.getRegionNameAsString());
     try {
-      admin.flush(region.getRegionName());
+      admin.flushRegion(region.getRegionName());
     } catch (Exception ex) {
       LOG.warn("Flush failed, might be caused by other chaos: " + ex.getMessage());
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushTableAction.java
index 4ae21d1..f86d2a1 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/FlushTableAction.java
@@ -21,8 +21,6 @@ package org.apache.hadoop.hbase.chaos.actions;
 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.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
 * Action that tries to flush a table.
@@ -31,13 +29,13 @@ public class FlushTableAction extends Action {
   private final long sleepTime;
   private final TableName tableName;
 
-  public FlushTableAction(String tableName) {
+  public FlushTableAction(TableName tableName) {
     this(-1, tableName);
   }
 
-  public FlushTableAction(int sleepTime, String tableName) {
+  public FlushTableAction(int sleepTime, TableName tableName) {
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
   }
 
   @Override
@@ -47,7 +45,7 @@ public class FlushTableAction extends Action {
 
     LOG.info("Performing action: Flush table " + tableName);
     try {
-      admin.flush(tableName.toBytes());
+      admin.flush(tableName);
     } catch (Exception ex) {
       LOG.warn("Flush failed, might be caused by other chaos: " + ex.getMessage());
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MergeRandomAdjacentRegionsOfTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MergeRandomAdjacentRegionsOfTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MergeRandomAdjacentRegionsOfTableAction.java
index ecb58da..0aaefe5 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MergeRandomAdjacentRegionsOfTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MergeRandomAdjacentRegionsOfTableAction.java
@@ -25,8 +25,6 @@ import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action to merge regions of a table.
@@ -35,12 +33,12 @@ public class MergeRandomAdjacentRegionsOfTableAction extends Action {
   private final TableName tableName;
   private final long sleepTime;
 
-  public MergeRandomAdjacentRegionsOfTableAction(String tableName) {
+  public MergeRandomAdjacentRegionsOfTableAction(TableName tableName) {
     this(-1, tableName);
   }
 
-  public MergeRandomAdjacentRegionsOfTableAction(int sleepTime, String tableName) {
-    this.tableName = TableName.valueOf(tableName);
+  public MergeRandomAdjacentRegionsOfTableAction(int sleepTime, TableName tableName) {
+    this.tableName = tableName;
     this.sleepTime = sleepTime;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRandomRegionOfTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRandomRegionOfTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRandomRegionOfTableAction.java
index 0981fb5..96cd008 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRandomRegionOfTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRandomRegionOfTableAction.java
@@ -25,8 +25,6 @@ import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
 * Action that tries to move a random region of a table.
@@ -35,13 +33,13 @@ public class MoveRandomRegionOfTableAction extends Action {
   private final long sleepTime;
   private final TableName tableName;
 
-  public MoveRandomRegionOfTableAction(String tableName) {
+  public MoveRandomRegionOfTableAction(TableName tableName) {
     this(-1, tableName);
   }
 
-  public MoveRandomRegionOfTableAction(long sleepTime, String tableName) {
+  public MoveRandomRegionOfTableAction(long sleepTime, TableName tableName) {
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRegionsOfTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRegionsOfTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRegionsOfTableAction.java
index 50d1948..5e380a3 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRegionsOfTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/MoveRegionsOfTableAction.java
@@ -28,7 +28,6 @@ import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.chaos.factories.MonkeyConstants;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.util.Bytes;
 
 /**
@@ -39,13 +38,13 @@ public class MoveRegionsOfTableAction extends Action {
   private final TableName tableName;
   private final long maxTime;
 
-  public MoveRegionsOfTableAction(String tableName) {
+  public MoveRegionsOfTableAction(TableName tableName) {
     this(-1, MonkeyConstants.DEFAULT_MOVE_REGIONS_MAX_TIME, tableName);
   }
 
-  public MoveRegionsOfTableAction(long sleepTime, long maxSleepTime, String tableName) {
+  public MoveRegionsOfTableAction(long sleepTime, long maxSleepTime, TableName tableName) {
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
     this.maxTime = maxSleepTime;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RemoveColumnAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RemoveColumnAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RemoveColumnAction.java
index bfcf1b5..fc169e3 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RemoveColumnAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RemoveColumnAction.java
@@ -26,8 +26,6 @@ import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Action that removes a column family.
@@ -35,13 +33,11 @@ import org.apache.hadoop.hbase.util.Bytes;
 public class RemoveColumnAction extends Action {
   private final TableName tableName;
   private final Set<String> protectedColumns;
-  private final String tableNameString;
   private Admin admin;
   private Random random;
 
-  public RemoveColumnAction(String tableName, Set<String> protectedColumns) {
-    tableNameString = tableName;
-    this.tableName = TableName.valueOf(tableName);
+  public RemoveColumnAction(TableName tableName, Set<String> protectedColumns) {
+    this.tableName = tableName;
     this.protectedColumns = protectedColumns;
     random = new Random();
   }
@@ -67,7 +63,7 @@ public class RemoveColumnAction extends Action {
       index = random.nextInt(columnDescriptors.length);
     }
     LOG.debug("Performing action: Removing " + columnDescriptors[index].getName() + " from "
-        + tableNameString);
+        + tableName.getNameAsString());
     tableDescriptor.removeFamily(columnDescriptors[index].getName());
 
     admin.modifyTable(tableName, tableDescriptor);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SnapshotTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SnapshotTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SnapshotTableAction.java
index c0dedaa..1c7a9d9 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SnapshotTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SnapshotTableAction.java
@@ -21,7 +21,6 @@ package org.apache.hadoop.hbase.chaos.actions;
 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.HBaseAdmin;
 
 /**
 * Action that tries to take a snapshot of a table.
@@ -30,12 +29,12 @@ public class SnapshotTableAction extends Action {
   private final TableName tableName;
   private final long sleepTime;
 
-  public SnapshotTableAction(String tableName) {
+  public SnapshotTableAction(TableName tableName) {
     this(-1, tableName);
   }
 
-  public SnapshotTableAction(int sleepTime, String tableName) {
-    this.tableName = TableName.valueOf(tableName);
+  public SnapshotTableAction(int sleepTime, TableName tableName) {
+    this.tableName = tableName;
     this.sleepTime = sleepTime;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SplitRandomRegionOfTableAction.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SplitRandomRegionOfTableAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SplitRandomRegionOfTableAction.java
index d0c3419..209ef24 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SplitRandomRegionOfTableAction.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/SplitRandomRegionOfTableAction.java
@@ -25,8 +25,6 @@ import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
 import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.util.Bytes;
 
 /**
 * Action that tries to split a random region of a table.
@@ -35,13 +33,13 @@ public class SplitRandomRegionOfTableAction extends Action {
   private final long sleepTime;
   private final TableName tableName;
 
-  public SplitRandomRegionOfTableAction(String tableName) {
+  public SplitRandomRegionOfTableAction(TableName tableName) {
     this(-1, tableName);
   }
 
-  public SplitRandomRegionOfTableAction(int sleepTime, String tableName) {
+  public SplitRandomRegionOfTableAction(int sleepTime, TableName tableName) {
     this.sleepTime = sleepTime;
-    this.tableName = TableName.valueOf(tableName);
+    this.tableName = tableName;
   }
 
   @Override
@@ -60,7 +58,7 @@ public class SplitRandomRegionOfTableAction extends Action {
         regions.toArray(new HRegionInfo[regions.size()]));
     LOG.debug("Splitting region " + region.getRegionNameAsString());
     try {
-      admin.split(region.getRegionName());
+      admin.splitRegion(region.getRegionName());
     } catch (Exception ex) {
       LOG.warn("Split failed, might be caused by other chaos: " + ex.getMessage());
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1a6eea33/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java
index 8fb1859..532839e 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.java
@@ -23,6 +23,7 @@ import java.util.Properties;
 import java.util.Set;
 
 import org.apache.hadoop.hbase.IntegrationTestingUtility;
+import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
 
 import com.google.common.collect.ImmutableMap;
@@ -32,12 +33,12 @@ import com.google.common.collect.ImmutableMap;
  */
 public abstract class MonkeyFactory {
 
-  protected String tableName;
+  protected TableName tableName;
   protected Set<String> columnFamilies;
   protected IntegrationTestingUtility util;
   protected Properties properties = new Properties();
 
-  public MonkeyFactory setTableName(String tableName) {
+  public MonkeyFactory setTableName(TableName tableName) {
     this.tableName = tableName;
     return this;
   }