You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2017/09/14 00:19:34 UTC

[2/3] hbase git commit: HBASE-14998 Unify synchronous and asynchronous methods in Admin and cleanup

http://git-wip-us.apache.org/repos/asf/hbase/blob/780be085/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 19290f0..0a82a6b 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
@@ -60,10 +60,10 @@ import org.apache.hadoop.hbase.snapshot.UnknownSnapshotException;
 import org.apache.hadoop.hbase.util.Pair;
 
 /**
- * The administrative API for HBase. Obtain an instance from an {@link Connection#getAdmin()} and
- * call {@link #close()} afterwards.
- * <p>Admin can be used to create, drop, list, enable and disable tables, add and drop table
- * column families and other administrative operations.
+ * The administrative API for HBase. Obtain an instance from {@link Connection#getAdmin()} and
+ * call {@link #close()} when done.
+ * <p>Admin can be used to create, drop, list, enable and disable and otherwise modify tables,
+ * as well as perform other administrative operations.
  *
  * @see ConnectionFactory
  * @see Connection
@@ -87,18 +87,19 @@ public interface Admin extends Abortable, Closeable {
 
   /**
    * @param tableName Table to check.
-   * @return True if table exists already.
+   * @return <code>true</code> if table exists already.
    * @throws IOException
    */
-  boolean tableExists(final TableName tableName) throws IOException;
+  boolean tableExists(TableName tableName) throws IOException;
 
   /**
    * List all the userspace tables.
    *
-   * @return - returns an array of read-only HTableDescriptors
+   * @return an array of read-only HTableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @deprecated since 2.0 version and will be removed in 3.0 version.
-   *             use {@link #listTableDescriptors()}
+   *             Use {@link #listTableDescriptors()}.
+   * @see #listTableDescriptors()
    */
   @Deprecated
   HTableDescriptor[] listTables() throws IOException;
@@ -106,29 +107,30 @@ public interface Admin extends Abortable, Closeable {
   /**
    * List all the userspace tables.
    *
-   * @return - returns a list of TableDescriptors
+   * @return a list of TableDescriptors
    * @throws IOException if a remote or network exception occurs
    */
   List<TableDescriptor> listTableDescriptors() throws IOException;
 
   /**
-   * List all the userspace tables matching the given pattern.
+   * List all the userspace tables that match the given pattern.
    *
    * @param pattern The compiled regular expression to match against
-   * @return - returns an array of read-only HTableDescriptors
+   * @return an array of read-only HTableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables()
    * @deprecated since 2.0 version and will be removed in 3.0 version.
-   *             use {@link #listTableDescriptors(java.util.regex.Pattern)}
+   *             Use {@link #listTableDescriptors(java.util.regex.Pattern)}.
+   * @see #listTableDescriptors(Pattern)
    */
   @Deprecated
   HTableDescriptor[] listTables(Pattern pattern) throws IOException;
 
   /**
-   * List all the userspace tables matching the given pattern.
+   * List all the userspace tables that match the given pattern.
    *
    * @param pattern The compiled regular expression to match against
-   * @return - returns a list of TableDescriptors
+   * @return a list of TableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables()
    */
@@ -138,11 +140,11 @@ public interface Admin extends Abortable, Closeable {
    * List all the userspace tables matching the given regular expression.
    *
    * @param regex The regular expression to match against
-   * @return - returns an array of read-only HTableDescriptors
+   * @return a list of read-only HTableDescriptors
    * @throws IOException if a remote or network exception occurs
-   * @see #listTables(java.util.regex.Pattern)
+   * @see #listTableDescriptors(java.lang.String)
    * @deprecated since 2.0 version and will be removed in 3.0 version.
-   *             use {@link #listTableDescriptors(java.lang.String)}
+   *             Use {@link #listTableDescriptors(java.lang.String)}.
    */
   @Deprecated
   HTableDescriptor[] listTables(String regex) throws IOException;
@@ -150,8 +152,8 @@ public interface Admin extends Abortable, Closeable {
   /**
    * List all the userspace tables matching the given regular expression.
    *
-   * @param regex The regular expression to match against
-   * @return - returns a list of TableDescriptors
+   * @param regex The regular expression to match against.
+   * @return a list of TableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables(java.util.regex.Pattern)
    */
@@ -161,12 +163,13 @@ public interface Admin extends Abortable, Closeable {
    * List all the tables matching the given pattern.
    *
    * @param pattern The compiled regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
-   * @return - returns an array of read-only HTableDescriptors
+   * @param includeSysTables <code>false</code> to match only against userspace tables
+   * @return an array of read-only HTableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables()
    * @deprecated since 2.0 version and will be removed in 3.0 version.
-   *             use {@link #listTableDescriptors(java.util.regex.Pattern, boolean)}
+   *             Use {@link #listTableDescriptors(java.util.regex.Pattern, boolean)}.
+   * @see #listTableDescriptors(java.util.regex.Pattern, boolean)
    */
   @Deprecated
   HTableDescriptor[] listTables(Pattern pattern, boolean includeSysTables)
@@ -176,8 +179,8 @@ public interface Admin extends Abortable, Closeable {
    * List all the tables matching the given pattern.
    *
    * @param pattern The compiled regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
-   * @return - returns a list of TableDescriptors
+   * @param includeSysTables <code>false</code> to match only against userspace tables
+   * @return a list of TableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables()
    */
@@ -188,12 +191,12 @@ public interface Admin extends Abortable, Closeable {
    * List all the tables matching the given pattern.
    *
    * @param regex The regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
-   * @return - returns an array of read-only HTableDescriptors
+   * @param includeSysTables <code>false</code> to match only against userspace tables
+   * @return an array of read-only HTableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables(java.util.regex.Pattern, boolean)
    * @deprecated since 2.0 version and will be removed in 3.0 version.
-   *             use {@link #listTableDescriptors(java.lang.String, boolean)}
+   *             Use {@link #listTableDescriptors(java.lang.String, boolean)}.
    */
   @Deprecated
   HTableDescriptor[] listTables(String regex, boolean includeSysTables)
@@ -203,8 +206,8 @@ public interface Admin extends Abortable, Closeable {
    * List all the tables matching the given pattern.
    *
    * @param regex The regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
-   * @return - returns a list of TableDescriptors
+   * @param includeSysTables <code>false</code> to match only against userspace tables
+   * @return a list of TableDescriptors
    * @throws IOException if a remote or network exception occurs
    * @see #listTables(java.util.regex.Pattern, boolean)
    */
@@ -222,7 +225,7 @@ public interface Admin extends Abortable, Closeable {
   /**
    * List all of the names of userspace tables.
    * @param pattern The regular expression to match against
-   * @return TableName[] table names
+   * @return array of table names
    * @throws IOException if a remote or network exception occurs
    */
   TableName[] listTableNames(Pattern pattern) throws IOException;
@@ -238,46 +241,46 @@ public interface Admin extends Abortable, Closeable {
   /**
    * List all of the names of userspace tables.
    * @param pattern The regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
+   * @param includeSysTables <code>false</code> to match only against userspace tables
    * @return TableName[] table names
    * @throws IOException if a remote or network exception occurs
    */
-  TableName[] listTableNames(final Pattern pattern, final boolean includeSysTables)
+  TableName[] listTableNames(Pattern pattern, boolean includeSysTables)
       throws IOException;
 
   /**
    * List all of the names of userspace tables.
    * @param regex The regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
+   * @param includeSysTables <code>false</code> to match only against userspace tables
    * @return TableName[] table names
    * @throws IOException if a remote or network exception occurs
    */
-  TableName[] listTableNames(final String regex, final boolean includeSysTables)
+  TableName[] listTableNames(String regex, boolean includeSysTables)
       throws IOException;
 
   /**
-   * Method for getting the tableDescriptor
+   * Get a table descriptor.
    *
    * @param tableName as a {@link TableName}
    * @return the read-only tableDescriptor
    * @throws org.apache.hadoop.hbase.TableNotFoundException
    * @throws IOException if a remote or network exception occurs
    * @deprecated since 2.0 version and will be removed in 3.0 version.
-   *             use {@link #listTableDescriptor(TableName)}
+   *             Use {@link #getDescriptor(TableName)}.
    */
   @Deprecated
-  HTableDescriptor getTableDescriptor(final TableName tableName)
+  HTableDescriptor getTableDescriptor(TableName tableName)
       throws TableNotFoundException, IOException;
 
   /**
-   * Method for getting the tableDescriptor
+   * Get a table descriptor.
    *
    * @param tableName as a {@link TableName}
    * @return the tableDescriptor
    * @throws org.apache.hadoop.hbase.TableNotFoundException
    * @throws IOException if a remote or network exception occurs
    */
-  TableDescriptor listTableDescriptor(final TableName tableName)
+  TableDescriptor getDescriptor(TableName tableName)
       throws TableNotFoundException, IOException;
 
   /**
@@ -326,7 +329,7 @@ public interface Admin extends Abortable, Closeable {
    * threads, the table may have been created between test-for-existence and attempt-at-creation).
    * @throws IOException
    */
-  void createTable(final TableDescriptor desc, byte[][] splitKeys) throws IOException;
+  void createTable(TableDescriptor desc, byte[][] splitKeys) throws IOException;
 
   /**
    * Creates a new table but does not block and wait for it to come online.
@@ -343,7 +346,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async creation. You can use Future.get(long, TimeUnit)
    *    to wait on the operation to complete.
    */
-  Future<Void> createTableAsync(final TableDescriptor desc, final byte[][] splitKeys)
+  Future<Void> createTableAsync(TableDescriptor desc, byte[][] splitKeys)
       throws IOException;
 
   /**
@@ -352,10 +355,10 @@ public interface Admin extends Abortable, Closeable {
    * @param tableName name of table to delete
    * @throws IOException if a remote or network exception occurs
    */
-  void deleteTable(final TableName tableName) throws IOException;
+  void deleteTable(TableName tableName) throws IOException;
 
   /**
-   * Deletes the table but does not block and wait for it be completely removed.
+   * Deletes the table but does not block and wait for it to be completely removed.
    * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
    * It may throw ExecutionException if there was an error while executing the operation
    * or TimeoutException in case the wait timeout was not long enough to allow the
@@ -411,24 +414,24 @@ public interface Admin extends Abortable, Closeable {
    * Synchronous operation.
    *
    * @param tableName name of table to truncate
-   * @param preserveSplits True if the splits should be preserved
+   * @param preserveSplits <code>true</code> if the splits should be preserved
    * @throws IOException if a remote or network exception occurs
    */
-  public void truncateTable(final TableName tableName, final boolean preserveSplits)
+  void truncateTable(TableName tableName, boolean preserveSplits)
       throws IOException;
 
   /**
-   * Truncate the table but does not block and wait for it be completely enabled. You can use
+   * Truncate the table but does not block and wait for it to be completely enabled. You can use
    * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw
    * ExecutionException if there was an error while executing the operation or TimeoutException in
    * case the wait timeout was not long enough to allow the operation to complete.
    * @param tableName name of table to delete
-   * @param preserveSplits true if the splits should be preserved
+   * @param preserveSplits <code>true</code> if the splits should be preserved
    * @throws IOException if a remote or network exception occurs
    * @return the result of the async truncate. You can use Future.get(long, TimeUnit) to wait on the
    *         operation to complete.
    */
-  Future<Void> truncateTableAsync(final TableName tableName, final boolean preserveSplits)
+  Future<Void> truncateTableAsync(TableName tableName, boolean preserveSplits)
       throws IOException;
 
   /**
@@ -444,10 +447,10 @@ public interface Admin extends Abortable, Closeable {
    * @see #disableTable(org.apache.hadoop.hbase.TableName)
    * @see #enableTableAsync(org.apache.hadoop.hbase.TableName)
    */
-  void enableTable(final TableName tableName) throws IOException;
+  void enableTable(TableName tableName) throws IOException;
 
   /**
-   * Enable the table but does not block and wait for it be completely enabled.
+   * Enable the table but does not block and wait for it to be completely enabled.
    * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
    * It may throw ExecutionException if there was an error while executing the operation
    * or TimeoutException in case the wait timeout was not long enough to allow the
@@ -458,7 +461,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async enable. You can use Future.get(long, TimeUnit)
    *    to wait on the operation to complete.
    */
-  Future<Void> enableTableAsync(final TableName tableName) throws IOException;
+  Future<Void> enableTableAsync(TableName tableName) throws IOException;
 
   /**
    * Enable tables matching the passed in pattern and wait on completion. Warning: Use this method
@@ -498,7 +501,7 @@ public interface Admin extends Abortable, Closeable {
   HTableDescriptor[] enableTables(Pattern pattern) throws IOException;
 
   /**
-   * Disable the table but does not block and wait for it be completely disabled.
+   * Disable the table but does not block and wait for it to be completely disabled.
    * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
    * It may throw ExecutionException if there was an error while executing the operation
    * or TimeoutException in case the wait timeout was not long enough to allow the
@@ -509,7 +512,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async disable. You can use Future.get(long, TimeUnit)
    *    to wait on the operation to complete.
    */
-  Future<Void> disableTableAsync(final TableName tableName) throws IOException;
+  Future<Void> disableTableAsync(TableName tableName) throws IOException;
 
   /**
    * Disable table and wait on completion.  May timeout eventually.  Use {@link
@@ -521,7 +524,7 @@ public interface Admin extends Abortable, Closeable {
    * @throws IOException There could be couple types of IOException TableNotFoundException means the
    * table doesn't exist. TableNotEnabledException means the table isn't in enabled state.
    */
-  void disableTable(final TableName tableName) throws IOException;
+  void disableTable(TableName tableName) throws IOException;
 
   /**
    * Disable tables matching the passed in pattern and wait on completion. Warning: Use this method
@@ -563,21 +566,21 @@ public interface Admin extends Abortable, Closeable {
 
   /**
    * @param tableName name of table to check
-   * @return true if table is on-line
+   * @return <code>true</code> if table is on-line
    * @throws IOException if a remote or network exception occurs
    */
   boolean isTableEnabled(TableName tableName) throws IOException;
 
   /**
    * @param tableName name of table to check
-   * @return true if table is off-line
+   * @return <code>true</code> if table is off-line
    * @throws IOException if a remote or network exception occurs
    */
   boolean isTableDisabled(TableName tableName) throws IOException;
 
   /**
    * @param tableName name of table to check
-   * @return true if all regions of the table are available
+   * @return <code>true</code> if all regions of the table are available
    * @throws IOException if a remote or network exception occurs
    */
   boolean isTableAvailable(TableName tableName) throws IOException;
@@ -585,64 +588,72 @@ public interface Admin extends Abortable, Closeable {
   /**
    * Use this api to check if the table has been created with the specified number of splitkeys
    * which was used while creating the given table. Note : If this api is used after a table's
-   * region gets splitted, the api may return false.
+   * region gets splitted, the api may return <code>false</code>.
    *
    * @param tableName name of table to check
    * @param splitKeys keys to check if the table has been created with all split keys
    * @throws IOException if a remote or network excpetion occurs
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use {@link #isTableAvailable(TableName)}
    */
+  @Deprecated
   boolean isTableAvailable(TableName tableName, byte[][] splitKeys) throws IOException;
 
   /**
-   * Get the status of alter command - indicates how many regions have received the updated schema
-   * Asynchronous operation.
+   * Get the status of an <code>alter</code> (a.k.a <code>modify</code>) command - indicates how
+   * many regions have received the updated schema Asynchronous operation.
    *
    * @param tableName TableName instance
    * @return Pair indicating the number of regions updated Pair.getFirst() is the regions that are
    * yet to be updated Pair.getSecond() is the total number of regions of the table
    * @throws IOException if a remote or network exception occurs
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. No longer needed now you get a Future
+   * on an operation.
    */
-  Pair<Integer, Integer> getAlterStatus(final TableName tableName) throws IOException;
+  @Deprecated
+  Pair<Integer, Integer> getAlterStatus(TableName tableName) throws IOException;
 
   /**
-   * Get the status of alter command - indicates how many regions have received the updated schema
-   * Asynchronous operation.
+   * Get the status of <code>alter</code> (a.k.a <code>modify</code>) command - indicates how many
+   * regions have received the updated schema Asynchronous operation.
    *
    * @param tableName name of the table to get the status of
    * @return Pair indicating the number of regions updated Pair.getFirst() is the regions that are
    * yet to be updated Pair.getSecond() is the total number of regions of the table
    * @throws IOException if a remote or network exception occurs
-   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use {@link #getAlterStatus(TableName)}
-   *     instead.
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. No longer needed now you get a Future
+   * on an operation.
    */
   @Deprecated
-  Pair<Integer, Integer> getAlterStatus(final byte[] tableName) throws IOException;
+  Pair<Integer, Integer> getAlterStatus(byte[] tableName) throws IOException;
 
   /**
-   * Add a column family to an existing table. Asynchronous operation.
+   * Add a column family to an existing table. Synchronous operation.
+   * Use {@link #addColumnFamilyAsync(TableName, ColumnFamilyDescriptor)} instead because it
+   * returns a {@link Future} from which you can learn whether success or failure.
    *
    * @param tableName name of the table to add column family to
    * @param columnFamily column family descriptor of column family to be added
    * @throws IOException if a remote or network exception occurs
    * @deprecated As of release 2.0.0.
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-1989">HBASE-1989</a>).
    *             This will be removed in HBase 3.0.0.
    *             Use {@link #addColumnFamily(TableName, ColumnFamilyDescriptor)}.
    */
   @Deprecated
-  default void addColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
+  default void addColumn(TableName tableName, ColumnFamilyDescriptor columnFamily)
     throws IOException {
     addColumnFamily(tableName, columnFamily);
   }
 
   /**
-   * Add a column family to an existing table.
+   * Add a column family to an existing table. Synchronous operation.
+   * Use {@link #addColumnFamilyAsync(TableName, ColumnFamilyDescriptor)} instead because it
+   * returns a {@link Future} from which you can learn whether success or failure.
    *
    * @param tableName name of the table to add column family to
    * @param columnFamily column family descriptor of column family to be added
    * @throws IOException if a remote or network exception occurs
    */
-  void addColumnFamily(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
+  void addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily)
     throws IOException;
 
   /**
@@ -658,31 +669,33 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async add column family. You can use Future.get(long, TimeUnit) to
    *         wait on the operation to complete.
    */
-  Future<Void> addColumnFamilyAsync(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
+  Future<Void> addColumnFamilyAsync(TableName tableName, ColumnFamilyDescriptor columnFamily)
       throws IOException;
 
   /**
-   * Delete a column family from a table. Asynchronous operation.
+   * Delete a column family from a table. Synchronous operation.
+   *  Use {@link #deleteColumnFamily(TableName, byte[])} instead because it
+   * returns a {@link Future} from which you can learn whether success or failure.
    *
    * @param tableName name of table
    * @param columnFamily name of column family to be deleted
    * @throws IOException if a remote or network exception occurs
    * @deprecated As of release 2.0.0.
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-1989">HBASE-1989</a>).
    *             This will be removed in HBase 3.0.0.
    *             Use {@link #deleteColumnFamily(TableName, byte[])}}.
    */
   @Deprecated
-  void deleteColumn(final TableName tableName, final byte[] columnFamily) throws IOException;
+  void deleteColumn(TableName tableName, byte[] columnFamily) throws IOException;
 
   /**
-   * Delete a column family from a table. Asynchronous operation.
-   *
+   * Delete a column family from a table. Synchronous operation.
+   * Use {@link #deleteColumnFamily(TableName, byte[])} instead because it
+   * returns a {@link Future} from which you can learn whether success or failure.
    * @param tableName name of table
    * @param columnFamily name of column family to be deleted
    * @throws IOException if a remote or network exception occurs
    */
-  void deleteColumnFamily(final TableName tableName, final byte[] columnFamily) throws IOException;
+  void deleteColumnFamily(TableName tableName, byte[] columnFamily) throws IOException;
 
   /**
    * Delete a column family from a table. Asynchronous operation.
@@ -697,34 +710,35 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async delete column family. You can use Future.get(long, TimeUnit) to
    *         wait on the operation to complete.
    */
-  Future<Void> deleteColumnFamilyAsync(final TableName tableName, final byte[] columnFamily)
+  Future<Void> deleteColumnFamilyAsync(TableName tableName, byte[] columnFamily)
       throws IOException;
 
   /**
-   * Modify an existing column family on a table.
-   *
+   * Modify an existing column family on a table. Synchronous operation.
+   * Use {@link #modifyColumnFamilyAsync(TableName, ColumnFamilyDescriptor)} instead because it
+   * returns a {@link Future} from which you can learn whether success or failure.
    * @param tableName name of table
    * @param columnFamily new column family descriptor to use
    * @throws IOException if a remote or network exception occurs
    * @deprecated As of release 2.0.0.
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-1989">HBASE-1989</a>).
    *             This will be removed in HBase 3.0.0.
    *             Use {@link #modifyColumnFamily(TableName, ColumnFamilyDescriptor)}.
    */
   @Deprecated
-  default void modifyColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
+  default void modifyColumn(TableName tableName, ColumnFamilyDescriptor columnFamily)
       throws IOException {
     modifyColumnFamily(tableName, columnFamily);
   }
 
   /**
-   * Modify an existing column family on a table.
-   *
+   * Modify an existing column family on a table. Synchronous operation.
+   * Use {@link #modifyColumnFamilyAsync(TableName, ColumnFamilyDescriptor)} instead because it
+   * returns a {@link Future} from which you can learn whether success or failure.
    * @param tableName name of table
    * @param columnFamily new column family descriptor to use
    * @throws IOException if a remote or network exception occurs
    */
-  void modifyColumnFamily(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
+  void modifyColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily)
       throws IOException;
 
   /**
@@ -749,12 +763,11 @@ public interface Admin extends Abortable, Closeable {
    * @param regionname region name to close
    * @param serverName Deprecated. Not used.
    * @throws IOException if a remote or network exception occurs
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-18231">HBASE-18231</a>).
+   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
    *             Use {@link #unassign(byte[], boolean)}.
    */
   @Deprecated
-  void closeRegion(final String regionname, final String serverName) throws IOException;
+  void closeRegion(String regionname, String serverName) throws IOException;
 
   /**
    * Uses {@link #unassign(byte[], boolean)} to unassign the region. For expert-admins.
@@ -762,12 +775,11 @@ public interface Admin extends Abortable, Closeable {
    * @param regionname region name to close
    * @param serverName Deprecated. Not used.
    * @throws IOException if a remote or network exception occurs
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-18231">HBASE-18231</a>).
+   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
    *             Use {@link #unassign(byte[], boolean)}.
    */
   @Deprecated
-  void closeRegion(final byte[] regionname, final String serverName) throws IOException;
+  void closeRegion(byte[] regionname, String serverName) throws IOException;
 
   /**
    * Uses {@link #unassign(byte[], boolean)} to unassign the region. For expert-admins.
@@ -777,14 +789,13 @@ public interface Admin extends Abortable, Closeable {
    * <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>,
    * then the encoded region name is: <code>527db22f95c8a9e0116f0cc13c680396</code>.
    * @param serverName Deprecated. Not used.
-   * @return Deprecated. Returns true always.
+   * @return Deprecated. Returns <code>true</code> always.
    * @throws IOException if a remote or network exception occurs
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-18231">HBASE-18231</a>).
+   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
    *             Use {@link #unassign(byte[], boolean)}.
    */
   @Deprecated
-  boolean closeRegionWithEncodedRegionName(final String encodedRegionName, final String serverName)
+  boolean closeRegionWithEncodedRegionName(String encodedRegionName, String serverName)
       throws IOException;
 
   /**
@@ -801,7 +812,7 @@ public interface Admin extends Abortable, Closeable {
   /**
    * Get all the online regions on a region server.
    */
-  List<HRegionInfo> getOnlineRegions(final ServerName sn) throws IOException;
+  List<HRegionInfo> getOnlineRegions(ServerName sn) throws IOException;
 
   /**
    * Flush a table. Synchronous operation.
@@ -809,7 +820,7 @@ public interface Admin extends Abortable, Closeable {
    * @param tableName table to flush
    * @throws IOException if a remote or network exception occurs
    */
-  void flush(final TableName tableName) throws IOException;
+  void flush(TableName tableName) throws IOException;
 
   /**
    * Flush an individual region. Synchronous operation.
@@ -817,46 +828,56 @@ public interface Admin extends Abortable, Closeable {
    * @param regionName region to flush
    * @throws IOException if a remote or network exception occurs
    */
-  void flushRegion(final byte[] regionName) throws IOException;
+  void flushRegion(byte[] regionName) throws IOException;
 
   /**
-   * Compact a table. Asynchronous operation.
+   * Compact a table. Asynchronous operation in that this method requests that a
+   * Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to compact
    * @throws IOException if a remote or network exception occurs
    */
-  void compact(final TableName tableName) throws IOException;
+  void compact(TableName tableName) throws IOException;
 
   /**
-   * Compact an individual region. Asynchronous operation.
+   * Compact an individual region. Asynchronous operation in that this method requests that a
+   * Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param regionName region to compact
    * @throws IOException if a remote or network exception occurs
    */
-  void compactRegion(final byte[] regionName) throws IOException;
+  void compactRegion(byte[] regionName) throws IOException;
 
   /**
-   * Compact a column family within a table. Asynchronous operation.
+   * Compact a column family within a table. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to compact
    * @param columnFamily column family within a table
    * @throws IOException if a remote or network exception occurs
    */
-  void compact(final TableName tableName, final byte[] columnFamily)
+  void compact(TableName tableName, byte[] columnFamily)
     throws IOException;
 
   /**
-   * Compact a column family within a region. Asynchronous operation.
+   * Compact a column family within a region. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param regionName region to compact
    * @param columnFamily column family within a region
    * @throws IOException if a remote or network exception occurs
    */
-  void compactRegion(final byte[] regionName, final byte[] columnFamily)
+  void compactRegion(byte[] regionName, byte[] columnFamily)
     throws IOException;
 
   /**
-   * Major compact a table. Asynchronous operation.
+   * Major compact a table. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to major compact
    * @throws IOException if a remote or network exception occurs
@@ -864,41 +885,49 @@ public interface Admin extends Abortable, Closeable {
   void majorCompact(TableName tableName) throws IOException;
 
   /**
-   * Major compact a table or an individual region. Asynchronous operation.
+   * Major compact a table or an individual region. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param regionName region to major compact
    * @throws IOException if a remote or network exception occurs
    */
-  void majorCompactRegion(final byte[] regionName) throws IOException;
+  void majorCompactRegion(byte[] regionName) throws IOException;
 
   /**
-   * Major compact a column family within a table. Asynchronous operation.
+   * Major compact a column family within a table. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to major compact
    * @param columnFamily column family within a table
    * @throws IOException if a remote or network exception occurs
    */
-  void majorCompact(TableName tableName, final byte[] columnFamily)
+  void majorCompact(TableName tableName, byte[] columnFamily)
     throws IOException;
 
   /**
-   * Major compact a column family within region. Asynchronous operation.
+   * Major compact a column family within region. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param regionName egion to major compact
    * @param columnFamily column family within a region
    * @throws IOException if a remote or network exception occurs
    */
-  void majorCompactRegion(final byte[] regionName, final byte[] columnFamily)
+  void majorCompactRegion(byte[] regionName, byte[] columnFamily)
     throws IOException;
 
   /**
-   * Compact all regions on the region server
+   * Compact all regions on the region server. Asynchronous operation in that this method requests
+   * that a Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    * @param sn the region server name
    * @param major if it's major compaction
    * @throws IOException
    * @throws InterruptedException
    */
-  public void compactRegionServer(final ServerName sn, boolean major)
+  void compactRegionServer(ServerName sn, boolean major)
     throws IOException, InterruptedException;
 
   /**
@@ -914,14 +943,13 @@ public interface Admin extends Abortable, Closeable {
    * @throws IOException if we can't find a region named
    * <code>encodedRegionName</code>
    */
-  void move(final byte[] encodedRegionName, final byte[] destServerName)
-      throws IOException;
+  void move(byte[] encodedRegionName, byte[] destServerName) throws IOException;
 
   /**
+   * Assign a Region.
    * @param regionName Region name to assign.
    */
-  void assign(final byte[] regionName)
-      throws IOException;
+  void assign(byte[] regionName) throws IOException;
 
   /**
    * Unassign a region from current hosting regionserver.  Region will then be assigned to a
@@ -929,10 +957,10 @@ public interface Admin extends Abortable, Closeable {
    * #move(byte[], byte[])} if you want to control the region movement.
    *
    * @param regionName Region to unassign. Will clear any existing RegionPlan if one found.
-   * @param force If true, force unassign (Will remove region from regions-in-transition too if
+   * @param force If <code>true</code>, force unassign (Will remove region from regions-in-transition too if
    * present. If results in double assignment use hbck -fix to resolve. To be used by experts).
    */
-  void unassign(final byte[] regionName, final boolean force)
+  void unassign(byte[] regionName, boolean force)
       throws IOException;
 
   /**
@@ -945,24 +973,52 @@ public interface Admin extends Abortable, Closeable {
    * @param regionName Region to offline.
    * @throws IOException
    */
-  void offline(final byte[] regionName) throws IOException;
+  void offline(byte[] regionName) throws IOException;
 
   /**
    * Turn the load balancer on or off.
    *
-   * @param synchronous If true, it waits until current balance() call, if outstanding, to return.
+   * @param synchronous If <code>true</code>, it waits until current balance() call, if
+   * outstanding, to return.
    * @return Previous balancer value
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0.
+   * Use {@link #balancerSwitch(boolean, boolean)} instead.
    */
-  boolean setBalancerRunning(final boolean on, final boolean synchronous)
-      throws IOException;
+  @Deprecated
+  default boolean setBalancerRunning(boolean on, boolean synchronous) throws IOException {
+    return balancerSwitch(on, synchronous);
+  }
+
+  /**
+   * Turn the load balancer on or off.
+   * @param onOrOff Set to <code>true</code> to enable, <code>false</code> to disable.
+   * @param synchronous If <code>true</code>, it waits until current balance() call, if
+   * outstanding, to return.
+   * @return Previous balancer value
+   */
+  boolean balancerSwitch(boolean onOrOff, boolean synchronous)
+  throws IOException;
+
+  /**
+   * Invoke the balancer.  Will run the balancer and if regions to move, it will go ahead and do the
+   * reassignments.  Can NOT run for various reasons.  Check logs.
+   *
+   * @return <code>true</code> if balancer ran, <code>false</code> otherwise.
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0.
+   * Use {@link #balance()} instead.
+   */
+  @Deprecated
+  default boolean balancer() throws IOException {
+    return balance();
+  }
 
   /**
    * Invoke the balancer.  Will run the balancer and if regions to move, it will go ahead and do the
    * reassignments.  Can NOT run for various reasons.  Check logs.
    *
-   * @return True if balancer ran, false otherwise.
+   * @return <code>true</code> if balancer ran, <code>false</code> otherwise.
    */
-  boolean balancer() throws IOException;
+  boolean balance() throws IOException;
 
   /**
    * Invoke the balancer.  Will run the balancer and if regions to move, it will
@@ -970,28 +1026,43 @@ public interface Admin extends Abortable, Closeable {
    * would still run balancer. Can *not* run for other reasons.  Check
    * logs.
    * @param force whether we should force balance even if there is region in transition
-   * @return True if balancer ran, false otherwise.
+   * @return <code>true</code> if balancer ran, <code>false</code> otherwise.
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0.
+   * Use {@link #balance(boolean)} instead.
    */
-  boolean balancer(boolean force) throws IOException;
+  @Deprecated
+  default boolean balancer(boolean force) throws IOException {
+    return balance(force);
+  }
 
   /**
-   * Query the current state of the balancer
+   * Invoke the balancer.  Will run the balancer and if regions to move, it will
+   * go ahead and do the reassignments. If there is region in transition, force parameter of true
+   * would still run balancer. Can *not* run for other reasons.  Check
+   * logs.
+   * @param force whether we should force balance even if there is region in transition
+   * @return <code>true</code> if balancer ran, <code>false</code> otherwise.
+   */
+  boolean balance(boolean force) throws IOException;
+
+  /**
+   * Query the current state of the balancer.
    *
-   * @return true if the balancer is enabled, false otherwise.
+   * @return <code>true</code> if the balancer is enabled, <code>false</code> otherwise.
    */
   boolean isBalancerEnabled() throws IOException;
 
   /**
    * Invoke region normalizer. Can NOT run for various reasons.  Check logs.
    *
-   * @return True if region normalizer ran, false otherwise.
+   * @return <code>true</code> if region normalizer ran, <code>false</code> otherwise.
    */
   boolean normalize() throws IOException;
 
   /**
-   * Query the current state of the region normalizer
+   * Query the current state of the region normalizer.
    *
-   * @return true if region normalizer is enabled, false otherwise.
+   * @return <code>true</code> if region normalizer is enabled, <code>false</code> otherwise.
    */
   boolean isNormalizerEnabled() throws IOException;
 
@@ -999,69 +1070,119 @@ public interface Admin extends Abortable, Closeable {
    * Turn region normalizer on or off.
    *
    * @return Previous normalizer value
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use {@link #normalizerSwitch(boolean)}}
+   * instead.
    */
-  boolean setNormalizerRunning(final boolean on)
-    throws IOException;
+  @Deprecated
+  default boolean setNormalizerRunning(boolean on) throws IOException {
+    return normalizerSwitch(on);
+  }
+
+  /**
+   * Turn region normalizer on or off.
+   *
+   * @return Previous normalizer value
+   */
+  boolean normalizerSwitch (boolean on) throws IOException;
 
   /**
-   * Enable/Disable the catalog janitor
+   * Enable/Disable the catalog janitor.
    *
-   * @param enable if true enables the catalog janitor
+   * @param enable if <code>true</code> enables the catalog janitor
    * @return the previous state
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use {@link #catalogJanitorSwitch(boolean)}}
+   * instead.
    */
-  boolean enableCatalogJanitor(boolean enable) throws IOException;
+  @Deprecated
+  default boolean enableCatalogJanitor(boolean enable) throws IOException {
+    return catalogJanitorSwitch(enable);
+  }
 
   /**
-   * Ask for a scan of the catalog table
+   * Enable/Disable the catalog janitor/
+   *
+   * @param onOrOff if <code>true</code> enables the catalog janitor
+   * @return the previous state
+   */
+  boolean catalogJanitorSwitch(boolean onOrOff) throws IOException;
+
+  /**
+   * Ask for a scan of the catalog table.
    *
    * @return the number of entries cleaned
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use {@link #runCatalogJanitor()}}
+   * instead.
    */
-  int runCatalogScan() throws IOException;
+  @Deprecated
+  default int runCatalogScan() throws IOException {
+    return runCatalogJanitor();
+  }
 
   /**
-   * Query on the catalog janitor state (Enabled/Disabled?)
+   * Ask for a scan of the catalog table.
+   *
+   * @return the number of entries cleaned
+   */
+  int runCatalogJanitor() throws IOException;
+
+  /**
+   * Query on the catalog janitor state (Enabled/Disabled?).
    *
    */
   boolean isCatalogJanitorEnabled() throws IOException;
 
   /**
-   * Enable/Disable the cleaner chore
+   * Enable/Disable the cleaner chore.
+   *
+   * @param on if <code>true</code> enables the cleaner chore
+   * @return the previous state
+   * @throws IOException
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use {@link #cleanerChoreSwitch(boolean)}}
+   * instead.
+   */
+  @Deprecated
+  default boolean setCleanerChoreRunning(boolean on) throws IOException {
+    return cleanerChoreSwitch(on);
+  }
+
+  /**
+   * Enable/Disable the cleaner chore.
    *
-   * @param on if true enables the cleaner chore
+   * @param onOrOff if <code>true</code> enables the cleaner chore
    * @return the previous state
    * @throws IOException
    */
-  public boolean setCleanerChoreRunning(final boolean on) throws IOException;
+  boolean cleanerChoreSwitch(boolean onOrOff) throws IOException;
 
   /**
-   * Ask for cleaner chore to run
+   * Ask for cleaner chore to run.
    *
-   * @return True if cleaner chore ran, false otherwise
+   * @return <code>true</code> if cleaner chore ran, <code>false</code> otherwise
    * @throws IOException
    */
-  public boolean runCleanerChore() throws IOException;
+  boolean runCleanerChore() throws IOException;
 
   /**
-   * Query on the cleaner chore state (Enabled/Disabled?)
+   * Query on the cleaner chore state (Enabled/Disabled?).
    *
    * @throws IOException
    */
-  public boolean isCleanerChoreEnabled() throws IOException;
+  boolean isCleanerChoreEnabled() throws IOException;
 
   /**
    * Merge two regions. Asynchronous operation.
    *
    * @param nameOfRegionA encoded or full name of region a
    * @param nameOfRegionB encoded or full name of region b
-   * @param forcible true if do a compulsory merge, otherwise we will only merge two adjacent
-   * regions
+   * @param forcible <code>true</code> if do a compulsory merge, otherwise we will only merge two
+   * adjacent regions
    * @throws IOException
    * @deprecated Since 2.0. Will be removed in 3.0. Use
    *     {@link #mergeRegionsAsync(byte[], byte[], boolean)} instead.
    */
   @Deprecated
-  void mergeRegions(final byte[] nameOfRegionA, final byte[] nameOfRegionB,
-      final boolean forcible) throws IOException;
+  void mergeRegions(byte[] nameOfRegionA, byte[] nameOfRegionB,
+      boolean forcible) throws IOException;
 
 
   /**
@@ -1069,46 +1190,45 @@ public interface Admin extends Abortable, Closeable {
    *
    * @param nameOfRegionA encoded or full name of region a
    * @param nameOfRegionB encoded or full name of region b
-   * @param forcible true if do a compulsory merge, otherwise we will only merge
+   * @param forcible <code>true</code> if do a compulsory merge, otherwise we will only merge
    *          two adjacent regions
    * @throws IOException
    */
   Future<Void> mergeRegionsAsync(
-      final byte[] nameOfRegionA,
-      final byte[] nameOfRegionB,
-      final boolean forcible) throws IOException;
+      byte[] nameOfRegionA,
+      byte[] nameOfRegionB,
+      boolean forcible) throws IOException;
 
   /**
    * Merge regions. Asynchronous operation.
    *
    * @param nameofRegionsToMerge encoded or full name of daughter regions
-   * @param forcible true if do a compulsory merge, otherwise we will only merge
+   * @param forcible <code>true</code> if do a compulsory merge, otherwise we will only merge
    *          adjacent regions
    * @throws IOException
    */
   Future<Void> mergeRegionsAsync(
-      final byte[][] nameofRegionsToMerge,
-      final boolean forcible) throws IOException;
+      byte[][] nameofRegionsToMerge,
+      boolean forcible) throws IOException;
 
   /**
-   * Split a table. Asynchronous operation.
-   *
+   + Split a table. The method will execute split action for each region in table.
+   + Asynchronous operation.
    * @param tableName table to split
    * @throws IOException if a remote or network exception occurs
    */
-  void split(final TableName tableName) throws IOException;
+  void split(TableName tableName) throws IOException;
 
   /**
    * Split an individual region. Asynchronous operation.
    *
    * @param regionName region to split
    * @throws IOException if a remote or network exception occurs
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-18229">HBASE-18229</a>).
+   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
    *             Use {@link #splitRegionAsync(byte[], byte[])}.
    */
   @Deprecated
-  void splitRegion(final byte[] regionName) throws IOException;
+  void splitRegion(byte[] regionName) throws IOException;
 
   /**
    * Split a table. Asynchronous operation.
@@ -1117,7 +1237,7 @@ public interface Admin extends Abortable, Closeable {
    * @param splitPoint the explicit position to split on
    * @throws IOException if a remote or network exception occurs
    */
-  void split(final TableName tableName, final byte[] splitPoint)
+  void split(TableName tableName, byte[] splitPoint)
     throws IOException;
 
   /**
@@ -1126,12 +1246,11 @@ public interface Admin extends Abortable, Closeable {
    * @param regionName region to split
    * @param splitPoint the explicit position to split on
    * @throws IOException if a remote or network exception occurs
-   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
-   *             (<a href="https://issues.apache.org/jira/browse/HBASE-18229">HBASE-18229</a>).
+   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.
    *             Use {@link #splitRegionAsync(byte[], byte[])}.
    */
   @Deprecated
-  void splitRegion(final byte[] regionName, final byte[] splitPoint)
+  void splitRegion(byte[] regionName, byte[] splitPoint)
     throws IOException;
 
   /**
@@ -1153,16 +1272,15 @@ public interface Admin extends Abortable, Closeable {
    *             use {@link #modifyTable(TableDescriptor)}
    */
   @Deprecated
-  void modifyTable(final TableName tableName, final TableDescriptor td)
+  void modifyTable(TableName tableName, TableDescriptor td)
       throws IOException;
 
   /**
    * Modify an existing table, more IRB friendly version.
-   *
    * @param td modified description of the table
    * @throws IOException if a remote or network exception occurs
    */
-  void modifyTable(final TableDescriptor td) throws IOException;
+  void modifyTable(TableDescriptor td) throws IOException;
 
   /**
    * Modify an existing table, more IRB friendly version. Asynchronous operation.  This means that
@@ -1181,11 +1299,11 @@ public interface Admin extends Abortable, Closeable {
    *             use {@link #modifyTableAsync(TableDescriptor)}
    */
   @Deprecated
-  Future<Void> modifyTableAsync(final TableName tableName, final TableDescriptor td)
+  Future<Void> modifyTableAsync(TableName tableName, TableDescriptor td)
       throws IOException;
 
   /**
-   * Modify an existing table, more IRB friendly version. Asynchronous operation.  This means that
+   * Modify an existing table, more IRB (ruby) friendly version. Asynchronous operation. This means that
    * it may be a while before your schema change is updated across all of the table.
    * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
    * It may throw ExecutionException if there was an error while executing the operation
@@ -1201,7 +1319,7 @@ public interface Admin extends Abortable, Closeable {
       throws IOException;
 
   /**
-   * Shuts down the HBase cluster
+   * Shuts down the HBase cluster.
    *
    * @throws IOException if a remote or network exception occurs
    */
@@ -1216,20 +1334,20 @@ public interface Admin extends Abortable, Closeable {
   void stopMaster() throws IOException;
 
   /**
-   * Check whether Master is in maintenance mode
+   * Check whether Master is in maintenance mode.
    *
    * @throws IOException if a remote or network exception occurs
    */
   boolean isMasterInMaintenanceMode()  throws IOException;
 
   /**
-   * Stop the designated regionserver
+   * Stop the designated regionserver.
    *
    * @param hostnamePort Hostname and port delimited by a <code>:</code> as in
    * <code>example.org:1234</code>
    * @throws IOException if a remote or network exception occurs
    */
-  void stopRegionServer(final String hostnamePort) throws IOException;
+  void stopRegionServer(String hostnamePort) throws IOException;
 
   /**
    * Get whole cluster status, containing status about:
@@ -1257,21 +1375,21 @@ public interface Admin extends Abortable, Closeable {
   /**
    * Get {@link RegionLoad} of all regions hosted on a regionserver.
    *
-   * @param sn region server from which regionload is required.
+   * @param serverName region server from which regionload is required.
    * @return region load map of all regions hosted on a region server
    * @throws IOException if a remote or network exception occurs
    */
-  Map<byte[], RegionLoad> getRegionLoad(ServerName sn) throws IOException;
+  Map<byte[], RegionLoad> getRegionLoad(ServerName serverName) throws IOException;
 
   /**
    * Get {@link RegionLoad} of all regions hosted on a regionserver for a table.
    *
-   * @param sn region server from which regionload is required.
+   * @param serverName region server from which regionload is required.
    * @param tableName get region load of regions belonging to the table
    * @return region load map of all regions of a table hosted on a region server
    * @throws IOException if a remote or network exception occurs
    */
-  Map<byte[], RegionLoad> getRegionLoad(ServerName sn, TableName tableName) throws IOException;
+  Map<byte[], RegionLoad> getRegionLoad(ServerName serverName, TableName tableName) throws IOException;
 
   /**
    * @return Configuration used by the instance.
@@ -1282,19 +1400,19 @@ public interface Admin extends Abortable, Closeable {
    * Create a new namespace. Blocks until namespace has been successfully created or an exception
    * is thrown.
    *
-   * @param descriptor descriptor which describes the new namespace
+   * @param descriptor descriptor which describes the new namespace.
    */
-  void createNamespace(final NamespaceDescriptor descriptor)
+  void createNamespace(NamespaceDescriptor descriptor)
   throws IOException;
 
   /**
-   * Create a new namespace
+   * Create a new namespace.
    *
    * @param descriptor descriptor which describes the new namespace
    * @return the result of the async create namespace operation. Use Future.get(long, TimeUnit) to
    *  wait on the operation to complete.
    */
-  Future<Void> createNamespaceAsync(final NamespaceDescriptor descriptor)
+  Future<Void> createNamespaceAsync(NamespaceDescriptor descriptor)
   throws IOException;
 
   /**
@@ -1303,17 +1421,17 @@ public interface Admin extends Abortable, Closeable {
    *
    * @param descriptor descriptor which describes the new namespace
    */
-  void modifyNamespace(final NamespaceDescriptor descriptor)
+  void modifyNamespace(NamespaceDescriptor descriptor)
   throws IOException;
 
   /**
-   * Modify an existing namespace
+   * Modify an existing namespace.
    *
    * @param descriptor descriptor which describes the new namespace
    * @return the result of the async modify namespace operation. Use Future.get(long, TimeUnit) to
    *  wait on the operation to complete.
    */
-  Future<Void> modifyNamespaceAsync(final NamespaceDescriptor descriptor)
+  Future<Void> modifyNamespaceAsync(NamespaceDescriptor descriptor)
   throws IOException;
 
   /**
@@ -1323,7 +1441,7 @@ public interface Admin extends Abortable, Closeable {
    *
    * @param name namespace name
    */
-  void deleteNamespace(final String name) throws IOException;
+  void deleteNamespace(String name) throws IOException;
 
   /**
    * Delete an existing namespace. Only empty namespaces (no tables) can be removed.
@@ -1332,21 +1450,21 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async delete namespace operation. Use Future.get(long, TimeUnit) to
    *  wait on the operation to complete.
    */
-  Future<Void> deleteNamespaceAsync(final String name) throws IOException;
+  Future<Void> deleteNamespaceAsync(String name) throws IOException;
 
   /**
-   * Get a namespace descriptor by name
+   * Get a namespace descriptor by name.
    *
    * @param name name of namespace descriptor
    * @return A descriptor
    * @throws org.apache.hadoop.hbase.NamespaceNotFoundException
    * @throws IOException if a remote or network exception occurs
    */
-  NamespaceDescriptor getNamespaceDescriptor(final String name)
+  NamespaceDescriptor getNamespaceDescriptor(String name)
   throws NamespaceNotFoundException, IOException;
 
   /**
-   * List available namespace descriptors
+   * List available namespace descriptors.
    *
    * @return List of descriptors
    */
@@ -1354,7 +1472,7 @@ public interface Admin extends Abortable, Closeable {
   throws IOException;
 
   /**
-   * Get list of table descriptors by namespace
+   * Get list of table descriptors by namespace.
    *
    * @param name namespace name
    * @return HTD[] the read-only tableDescriptors
@@ -1363,27 +1481,27 @@ public interface Admin extends Abortable, Closeable {
    *             use {@link #listTableDescriptorsByNamespace(byte[])}
    */
   @Deprecated
-  HTableDescriptor[] listTableDescriptorsByNamespace(final String name)
+  HTableDescriptor[] listTableDescriptorsByNamespace(String name)
       throws IOException;
 
   /**
-   * Get list of table descriptors by namespace
+   * Get list of table descriptors by namespace.
    *
    * @param name namespace name
    * @return returns a list of TableDescriptors
    * @throws IOException
    */
-  List<TableDescriptor> listTableDescriptorsByNamespace(final byte[] name)
+  List<TableDescriptor> listTableDescriptorsByNamespace(byte[] name)
       throws IOException;
 
   /**
-   * Get list of table names by namespace
+   * Get list of table names by namespace.
    *
    * @param name namespace name
    * @return The list of table names in the namespace
    * @throws IOException
    */
-  TableName[] listTableNamesByNamespace(final String name)
+  TableName[] listTableNamesByNamespace(String name)
       throws IOException;
 
   /**
@@ -1393,14 +1511,14 @@ public interface Admin extends Abortable, Closeable {
    * @return List of {@link HRegionInfo}.
    * @throws IOException
    */
-  List<HRegionInfo> getTableRegions(final TableName tableName)
+  List<HRegionInfo> getTableRegions(TableName tableName)
     throws IOException;
 
   @Override
   void close() throws IOException;
 
   /**
-   * Get tableDescriptors
+   * Get tableDescriptors.
    *
    * @param tableNames List of table names
    * @return HTD[] the read-only tableDescriptors
@@ -1413,7 +1531,7 @@ public interface Admin extends Abortable, Closeable {
     throws IOException;
 
   /**
-   * Get tableDescriptors
+   * Get tableDescriptors.
    *
    * @param tableNames List of table names
    * @return returns a list of TableDescriptors
@@ -1423,7 +1541,7 @@ public interface Admin extends Abortable, Closeable {
     throws IOException;
 
   /**
-   * Get tableDescriptors
+   * Get tableDescriptors.
    *
    * @param names List of table names
    * @return HTD[] the read-only tableDescriptors
@@ -1436,18 +1554,18 @@ public interface Admin extends Abortable, Closeable {
     throws IOException;
 
   /**
-   * abort a procedure
+   * Abort a procedure.
    * @param procId ID of the procedure to abort
    * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?
-   * @return true if aborted, false if procedure already completed or does not exist
+   * @return <code>true</code> if aborted, <code>false</code> if procedure already completed or does not exist
    * @throws IOException
    */
   boolean abortProcedure(
-      final long procId,
-      final boolean mayInterruptIfRunning) throws IOException;
+      long procId,
+      boolean mayInterruptIfRunning) throws IOException;
 
   /**
-   * Abort a procedure but does not block and wait for it be completely removed.
+   * Abort a procedure but does not block and wait for completion.
    * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
    * It may throw ExecutionException if there was an error while executing the operation
    * or TimeoutException in case the wait timeout was not long enough to allow the
@@ -1455,28 +1573,26 @@ public interface Admin extends Abortable, Closeable {
    *
    * @param procId ID of the procedure to abort
    * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?
-   * @return true if aborted, false if procedure already completed or does not exist
+   * @return <code>true</code> if aborted, <code>false</code> if procedure already completed or does not exist
    * @throws IOException
    */
   Future<Boolean> abortProcedureAsync(
-    final long procId,
-    final boolean mayInterruptIfRunning) throws IOException;
+    long procId,
+    boolean mayInterruptIfRunning) throws IOException;
 
   /**
    * Get procedures.
    * @return procedure list in JSON
    * @throws IOException
    */
-  String getProcedures()
-      throws IOException;
+  String getProcedures() throws IOException;
 
   /**
    * Get locks.
    * @return lock list in JSON
    * @throws IOException if a remote or network exception occurs
    */
-  String getLocks()
-      throws IOException;
+  String getLocks() throws IOException;
 
   /**
    * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.
@@ -1492,7 +1608,7 @@ public interface Admin extends Abortable, Closeable {
   void rollWALWriter(ServerName serverName) throws IOException, FailedLogCloseException;
 
   /**
-   * Helper delegage to getClusterStatus().getMasterCoprocessors().
+   * Helper that delegates to getClusterStatus().getMasterCoprocessors().
    * @return an array of master coprocessors
    * @see org.apache.hadoop.hbase.ClusterStatus#getMasterCoprocessors()
    */
@@ -1506,8 +1622,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the current compaction state
    * @throws IOException if a remote or network exception occurs
    */
-  CompactionState getCompactionState(final TableName tableName)
-    throws IOException;
+  CompactionState getCompactionState(TableName tableName) throws IOException;
 
   /**
    * Get the current compaction state of region. It could be in a major compaction, a minor
@@ -1517,8 +1632,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the current compaction state
    * @throws IOException if a remote or network exception occurs
    */
-  CompactionState getCompactionStateForRegion(
-    final byte[] regionName) throws IOException;
+  CompactionState getCompactionStateForRegion(byte[] regionName) throws IOException;
 
   /**
    * Get the timestamp of the last major compaction for the passed table
@@ -1530,8 +1644,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the last major compaction timestamp or 0
    * @throws IOException if a remote or network exception occurs
    */
-  long getLastMajorCompactionTimestamp(final TableName tableName)
-    throws IOException;
+  long getLastMajorCompactionTimestamp(TableName tableName) throws IOException;
 
   /**
    * Get the timestamp of the last major compaction for the passed region.
@@ -1543,8 +1656,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the last major compaction timestamp or 0
    * @throws IOException if a remote or network exception occurs
    */
-  long getLastMajorCompactionTimestampForRegion(final byte[] regionName)
-      throws IOException;
+  long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException;
 
   /**
    * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be
@@ -1561,7 +1673,7 @@ public interface Admin extends Abortable, Closeable {
    * @throws org.apache.hadoop.hbase.snapshot.SnapshotCreationException if snapshot creation failed
    * @throws IllegalArgumentException if the snapshot request is formatted incorrectly
    */
-  void snapshot(final String snapshotName, final TableName tableName)
+  void snapshot(String snapshotName, TableName tableName)
       throws IOException, SnapshotCreationException, IllegalArgumentException;
 
   /**
@@ -1577,7 +1689,7 @@ public interface Admin extends Abortable, Closeable {
    * @throws SnapshotCreationException if snapshot creation failed
    * @throws IllegalArgumentException if the snapshot request is formatted incorrectly
    */
-  void snapshot(final byte[] snapshotName, final TableName tableName)
+  void snapshot(byte[] snapshotName, TableName tableName)
       throws IOException, SnapshotCreationException, IllegalArgumentException;
 
   /**
@@ -1595,8 +1707,8 @@ public interface Admin extends Abortable, Closeable {
    * @throws SnapshotCreationException if snapshot creation failed
    * @throws IllegalArgumentException if the snapshot request is formatted incorrectly
    */
-  void snapshot(final String snapshotName,
-      final TableName tableName,
+  void snapshot(String snapshotName,
+      TableName tableName,
       SnapshotType type) throws IOException, SnapshotCreationException,
       IllegalArgumentException;
 
@@ -1629,9 +1741,25 @@ public interface Admin extends Abortable, Closeable {
    * @throws IOException if the snapshot did not succeed or we lose contact with the master.
    * @throws SnapshotCreationException if snapshot creation failed
    * @throws IllegalArgumentException if the snapshot request is formatted incorrectly
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use
+   * {@link #snapshotAsync(SnapshotDescription)} instead.
    */
-  void takeSnapshotAsync(SnapshotDescription snapshot)
-      throws IOException, SnapshotCreationException;
+  @Deprecated
+  default void takeSnapshotAsync(SnapshotDescription snapshot)
+  throws IOException, SnapshotCreationException {
+    snapshotAsync(snapshot);
+  }
+
+  /**
+   * Take a snapshot without waiting for the server to complete that snapshot (asynchronous) Only a
+   * single snapshot should be taken at a time, or results may be undefined.
+   *
+   * @param snapshot snapshot to take
+   * @throws IOException if the snapshot did not succeed or we lose contact with the master.
+   * @throws SnapshotCreationException if snapshot creation failed
+   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly
+   */
+  void snapshotAsync(SnapshotDescription snapshot) throws IOException, SnapshotCreationException;
 
   /**
    * Check the current state of the passed snapshot. There are three possible states: <ol>
@@ -1649,12 +1777,12 @@ public interface Admin extends Abortable, Closeable {
    * @throws org.apache.hadoop.hbase.snapshot.UnknownSnapshotException if the requested snapshot is
    * unknown
    */
-  boolean isSnapshotFinished(final SnapshotDescription snapshot)
+  boolean isSnapshotFinished(SnapshotDescription snapshot)
       throws IOException, HBaseSnapshotException, UnknownSnapshotException;
 
   /**
    * Restore the specified snapshot on the original table. (The table must be disabled) If the
-   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to true, a
+   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to <code>true</code>, a
    * snapshot of the current table is taken before executing the restore operation. In case of
    * restore failure, the failsafe snapshot will be restored. If the restore completes without
    * problem the failsafe snapshot is deleted.
@@ -1665,11 +1793,11 @@ public interface Admin extends Abortable, Closeable {
    * restored
    * @throws IllegalArgumentException if the restore request is formatted incorrectly
    */
-  void restoreSnapshot(final byte[] snapshotName) throws IOException, RestoreSnapshotException;
+  void restoreSnapshot(byte[] snapshotName) throws IOException, RestoreSnapshotException;
 
   /**
    * Restore the specified snapshot on the original table. (The table must be disabled) If the
-   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to true, a
+   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to <code>true</code>, a
    * snapshot of the current table is taken before executing the restore operation. In case of
    * restore failure, the failsafe snapshot will be restored. If the restore completes without
    * problem the failsafe snapshot is deleted.
@@ -1679,11 +1807,11 @@ public interface Admin extends Abortable, Closeable {
    * @throws RestoreSnapshotException if snapshot failed to be restored
    * @throws IllegalArgumentException if the restore request is formatted incorrectly
    */
-  void restoreSnapshot(final String snapshotName) throws IOException, RestoreSnapshotException;
+  void restoreSnapshot(String snapshotName) throws IOException, RestoreSnapshotException;
 
   /**
    * Restore the specified snapshot on the original table. (The table must be disabled) If the
-   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to true, a
+   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to <code>true</code>, a
    * snapshot of the current table is taken before executing the restore operation. In case of
    * restore failure, the failsafe snapshot will be restored. If the restore completes without
    * problem the failsafe snapshot is deleted.
@@ -1694,59 +1822,59 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async restore snapshot. You can use Future.get(long, TimeUnit)
    *    to wait on the operation to complete.
    */
-  Future<Void> restoreSnapshotAsync(final String snapshotName)
+  Future<Void> restoreSnapshotAsync(String snapshotName)
       throws IOException, RestoreSnapshotException;
 
   /**
    * Restore the specified snapshot on the original table. (The table must be disabled) If
-   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before
+   * 'takeFailSafeSnapshot' is set to <code>true</code>, a snapshot of the current table is taken before
    * executing the restore operation. In case of restore failure, the failsafe snapshot will be
    * restored. If the restore completes without problem the failsafe snapshot is deleted. The
    * failsafe snapshot name is configurable by using the property
    * "hbase.snapshot.restore.failsafe.name".
    *
    * @param snapshotName name of the snapshot to restore
-   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken
+   * @param takeFailSafeSnapshot <code>true</code> if the failsafe snapshot should be taken
    * @throws IOException if a remote or network exception occurs
    * @throws RestoreSnapshotException if snapshot failed to be restored
    * @throws IllegalArgumentException if the restore request is formatted incorrectly
    */
-  void restoreSnapshot(final byte[] snapshotName, final boolean takeFailSafeSnapshot)
+  void restoreSnapshot(byte[] snapshotName, boolean takeFailSafeSnapshot)
       throws IOException, RestoreSnapshotException;
 
   /**
    * Restore the specified snapshot on the original table. (The table must be disabled) If
-   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before
+   * 'takeFailSafeSnapshot' is set to <code>true</code>, a snapshot of the current table is taken before
    * executing the restore operation. In case of restore failure, the failsafe snapshot will be
    * restored. If the restore completes without problem the failsafe snapshot is deleted. The
    * failsafe snapshot name is configurable by using the property
    * "hbase.snapshot.restore.failsafe.name".
    *
    * @param snapshotName name of the snapshot to restore
-   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken
+   * @param takeFailSafeSnapshot <code>true</code> if the failsafe snapshot should be taken
    * @throws IOException if a remote or network exception occurs
    * @throws RestoreSnapshotException if snapshot failed to be restored
    * @throws IllegalArgumentException if the restore request is formatted incorrectly
    */
-  void restoreSnapshot(final String snapshotName, final boolean takeFailSafeSnapshot)
+  void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot)
       throws IOException, RestoreSnapshotException;
 
   /**
    * Restore the specified snapshot on the original table. (The table must be disabled) If
-   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before
+   * 'takeFailSafeSnapshot' is set to <code>true</code>, a snapshot of the current table is taken before
    * executing the restore operation. In case of restore failure, the failsafe snapshot will be
    * restored. If the restore completes without problem the failsafe snapshot is deleted. The
    * failsafe snapshot name is configurable by using the property
    * "hbase.snapshot.restore.failsafe.name".
    * @param snapshotName name of the snapshot to restore
-   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken
-   * @param restoreAcl true to restore acl of snapshot
+   * @param takeFailSafeSnapshot <code>true</code> if the failsafe snapshot should be taken
+   * @param restoreAcl <code>true</code> to restore acl of snapshot
    * @throws IOException if a remote or network exception occurs
    * @throws RestoreSnapshotException if snapshot failed to be restored
    * @throws IllegalArgumentException if the restore request is formatted incorrectly
    */
-  void restoreSnapshot(final String snapshotName, final boolean takeFailSafeSnapshot,
-      final boolean restoreAcl) throws IOException, RestoreSnapshotException;
+  void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot,
+      boolean restoreAcl) throws IOException, RestoreSnapshotException;
 
   /**
    * Create a new table by cloning the snapshot content.
@@ -1758,20 +1886,20 @@ public interface Admin extends Abortable, Closeable {
    * @throws RestoreSnapshotException if snapshot failed to be cloned
    * @throws IllegalArgumentException if the specified table has not a valid name
    */
-  void cloneSnapshot(final byte[] snapshotName, final TableName tableName)
+  void cloneSnapshot(byte[] snapshotName, TableName tableName)
       throws IOException, TableExistsException, RestoreSnapshotException;
 
   /**
    * Create a new table by cloning the snapshot content.
    * @param snapshotName name of the snapshot to be cloned
    * @param tableName name of the table where the snapshot will be restored
-   * @param restoreAcl true to clone acl into newly created table
+   * @param restoreAcl <code>true</code> to clone acl into newly created table
    * @throws IOException if a remote or network exception occurs
    * @throws TableExistsException if table to be created already exists
    * @throws RestoreSnapshotException if snapshot failed to be cloned
    * @throws IllegalArgumentException if the specified table has not a valid name
    */
-  void cloneSnapshot(final String snapshotName, final TableName tableName, final boolean restoreAcl)
+  void cloneSnapshot(String snapshotName, TableName tableName, boolean restoreAcl)
       throws IOException, TableExistsException, RestoreSnapshotException;
 
   /**
@@ -1784,12 +1912,12 @@ public interface Admin extends Abortable, Closeable {
    * @throws RestoreSnapshotException if snapshot failed to be cloned
    * @throws IllegalArgumentException if the specified table has not a valid name
    */
-  void cloneSnapshot(final String snapshotName, final TableName tableName)
+  void cloneSnapshot(String snapshotName, TableName tableName)
       throws IOException, TableExistsException, RestoreSnapshotException;
 
   /**
    * Create a new table by cloning the snapshot content, but does not block
-   * and wait for it be completely cloned.
+   * and wait for it to be completely cloned.
    * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
    * It may throw ExecutionException if there was an error while executing the operation
    * or TimeoutException in case the wait timeout was not long enough to allow the
@@ -1802,7 +1930,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the result of the async clone snapshot. You can use Future.get(long, TimeUnit)
    *    to wait on the operation to complete.
    */
-  Future<Void> cloneSnapshotAsync(final String snapshotName, final TableName tableName)
+  Future<Void> cloneSnapshotAsync(String snapshotName, TableName tableName)
       throws IOException, TableExistsException;
 
   /**
@@ -1828,9 +1956,28 @@ public interface Admin extends Abortable, Closeable {
    * @param props Property/Value pairs of properties passing to the procedure
    * @return data returned after procedure execution. null if no return data.
    * @throws IOException
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use
+   * {@link #execProcedureWithReturn(String, String, Map)} } instead.
    */
-  byte[] execProcedureWithRet(String signature, String instance, Map<String, String> props)
-      throws IOException;
+  @Deprecated
+  default byte[] execProcedureWithRet(String signature, String instance, Map<String, String> props)
+      throws IOException {
+    return execProcedureWithReturn(signature, instance, props);
+  }
+
+  /**
+   * Execute a distributed procedure on a cluster.
+   *
+   * @param signature A distributed procedure is uniquely identified by its signature (default the
+   * root ZK node name of the procedure).
+   * @param instance The instance name of the procedure. For some procedures, this parameter is
+   * optional.
+   * @param props Property/Value pairs of properties passing to the procedure
+   * @return data returned after procedure execution. null if no return data.
+   * @throws IOException
+   */
+  byte[] execProcedureWithReturn(String signature, String instance, Map<String, String> props)
+  throws IOException;
 
   /**
    * Check the current state of the specified procedure. There are three possible states: <ol>
@@ -1840,7 +1987,7 @@ public interface Admin extends Abortable, Closeable {
    * @param signature The signature that uniquely identifies a procedure
    * @param instance The instance name of the procedure
    * @param props Property/Value pairs of properties passing to the procedure
-   * @return true if the specified procedure is finished successfully, false if it is still running
+   * @return <code>true</code> if the specified procedure is finished successfully, <code>false</code> if it is still running
    * @throws IOException if the specified procedure finished with error
    */
   boolean isProcedureFinished(String signature, String instance, Map<String, String> props)
@@ -1858,7 +2005,7 @@ public interface Admin extends Abortable, Closeable {
    * List all the completed snapshots matching the given regular expression.
    *
    * @param regex The regular expression to match against
-   * @return - returns a List of SnapshotDescription
+   * @return list of SnapshotDescription
    * @throws IOException if a remote or network exception occurs
    */
   List<SnapshotDescription> listSnapshots(String regex) throws IOException;
@@ -1867,7 +2014,7 @@ public interface Admin extends Abortable, Closeable {
    * List all the completed snapshots matching the given pattern.
    *
    * @param pattern The compiled regular expression to match against
-   * @return - returns a List of SnapshotDescription
+   * @return list of SnapshotDescription
    * @throws IOException if a remote or network exception occurs
    */
   List<SnapshotDescription> listSnapshots(Pattern pattern) throws IOException;
@@ -1877,7 +2024,7 @@ public interface Admin extends Abortable, Closeable {
    * name regular expression.
    * @param tableNameRegex The table name regular expression to match against
    * @param snapshotNameRegex The snapshot name regular expression to match against
-   * @return - returns a List of completed SnapshotDescription
+   * @return list of completed SnapshotDescription
    * @throws IOException if a remote or network exception occurs
    */
   List<SnapshotDescription> listTableSnapshots(String tableNameRegex,
@@ -1888,7 +2035,7 @@ public interface Admin extends Abortable, Closeable {
    * name regular expression.
    * @param tableNamePattern The compiled table name regular expression to match against
    * @param snapshotNamePattern The compiled snapshot name regular expression to match against
-   * @return - returns a List of completed SnapshotDescription
+   * @return list of completed SnapshotDescription
    * @throws IOException if a remote or network exception occurs
    */
   List<SnapshotDescription> listTableSnapshots(Pattern tableNamePattern,
@@ -1900,7 +2047,7 @@ public interface Admin extends Abortable, Closeable {
    * @param snapshotName name of the snapshot
    * @throws IOException if a remote or network exception occurs
    */
-  void deleteSnapshot(final byte[] snapshotName) throws IOException;
+  void deleteSnapshot(byte[] snapshotName) throws IOException;
 
   /**
    * Delete an existing snapshot.
@@ -1908,7 +2055,7 @@ public interface Admin extends Abortable, Closeable {
    * @param snapshotName name of the snapshot
    * @throws IOException if a remote or network exception occurs
    */
-  void deleteSnapshot(final String snapshotName) throws IOException;
+  void deleteSnapshot(String snapshotName) throws IOException;
 
   /**
    * Delete existing snapshots whose names match the pattern passed.
@@ -1916,7 +2063,7 @@ public interface Admin extends Abortable, Closeable {
    * @param regex The regular expression to match against
    * @throws IOException if a remote or network exception occurs
    */
-  void deleteSnapshots(final String regex) throws IOException;
+  void deleteSnapshots(String regex) throws IOException;
 
   /**
    * Delete existing snapshots whose names match the pattern passed.
@@ -1924,7 +2071,7 @@ public interface Admin extends Abortable, Closeable {
    * @param pattern pattern for names of the snapshot to match
    * @throws IOException if a remote or network exception occurs
    */
-  void deleteSnapshots(final Pattern pattern) throws IOException;
+  void deleteSnapshots(Pattern pattern) throws IOException;
 
   /**
    * Delete all existing snapshots matching the given table name regular expression and snapshot
@@ -1951,7 +2098,7 @@ public interface Admin extends Abortable, Closeable {
    * @param quota the quota settings
    * @throws IOException if a remote or network exception occurs
    */
-  void setQuota(final QuotaSettings quota) throws IOException;
+  void setQuota(QuotaSettings quota) throws IOException;
 
   /**
    * Return a QuotaRetriever to list the quotas based on the filter.
@@ -1960,7 +2107,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the quota retriever
    * @throws IOException if a remote or network exception occurs
    */
-  QuotaRetriever getQuotaRetriever(final QuotaFilter filter) throws IOException;
+  QuotaRetriever getQuotaRetriever(QuotaFilter filter) throws IOException;
 
   /**
    * Creates and returns a {@link com.google.protobuf.RpcChannel} instance connected to the active
@@ -2000,15 +2147,15 @@ public interface Admin extends Abortable, Closeable {
    * MyCallResponse response = service.myCall(null, request);
    * </pre></blockquote></div>
    *
-   * @param sn the server name to which the endpoint call is made
+   * @param serverName the server name to which the endpoint call is made
    * @return A RegionServerCoprocessorRpcChannel instance
    */
-  CoprocessorRpcChannel coprocessorService(ServerName sn);
+  CoprocessorRpcChannel coprocessorService(ServerName serverName);
 
 
   /**
    * Update the configuration and trigger an online config change
-   * on the regionserver
+   * on the regionserver.
    * @param server : The server whose config needs to be updated.
    * @throws IOException
    */
@@ -2017,7 +2164,7 @@ public interface Admin extends Abortable, Closeable {
 
   /**
    * Update the configuration and trigger an online config change
-   * on all the regionservers
+   * on all the regionservers.
    * @throws IOException
    */
   void updateConfiguration() throws IOException;
@@ -2027,21 +2174,25 @@ public interface Admin extends Abortable, Closeable {
    * @return master info port
    * @throws IOException
    */
-  public int getMasterInfoPort() throws IOException;
+  int getMasterInfoPort() throws IOException;
 
   /**
-   * Compact a table. Asynchronous operation.
+   * Compact a table.  Asynchronous operation in that this method requests that a
+   * Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to compact
    * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
    * @throws IOException
    * @throws InterruptedException
    */
-  void compact(final TableName tableName, CompactType compactType)
+  void compact(TableName tableName, CompactType compactType)
     throws IOException, InterruptedException;
 
   /**
-   * Compact a column family within a table. Asynchronous operation.
+   * Compact a column family within a table.  Asynchronous operation in that this method requests that a
+   * Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to compact
    * @param columnFamily column family within a table
@@ -2049,22 +2200,26 @@ public interface Admin extends Abortable, Closeable {
    * @throws IOException if not a mob column family or if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void compact(final TableName tableName, final byte[] columnFamily, CompactType compactType)
+  void compact(TableName tableName, byte[] columnFamily, CompactType compactType)
     throws IOException, InterruptedException;
 
   /**
-   * Major compact a table. Asynchronous operation.
+   * Major compact a table.  Asynchronous operation in that this method requests that a
+   * Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to compact
    * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
    * @throws IOException
    * @throws InterruptedException
    */
-  void majorCompact(final TableName tableName, CompactType compactType)
+  void majorCompact(TableName tableName, CompactType compactType)
     throws IOException, InterruptedException;
 
   /**
-   * Major compact a column family within a table. Asynchronous operation.
+   * Major compact a column family within a table.  Asynchronous operation in that this method requests that a
+   * Compaction run and then it returns. It does not wait on the completion of Compaction
+   * (it can take a while).
    *
    * @param tableName table to compact
    * @param columnFamily column family within a table
@@ -2072,7 +2227,7 @@ public interface Admin extends Abortable, Closeable {
    * @throws IOException if not a mob column family or if a remote or network exception occurs
    * @throws InterruptedException
    */
-  void majorCompact(final TableName tableName, final byte[] columnFamily, CompactType compactType)
+  void majorCompact(TableName tableName, byte[] columnFamily, CompactType compactType)
     throws IOException, InterruptedException;
 
   /**
@@ -2083,7 +2238,7 @@ public interface Admin extends Abortable, Closeable {
    * @return the current compaction state
    * @throws IOException if a remote or network exception occurs
    */
-  CompactionState getCompactionState(final TableName tableName,
+  CompactionState getCompactionState(TableName tableName,
     CompactType compactType) throws IOException;
 
   /**
@@ -2097,76 +2252,104 @@ public interface Admin extends Abortable, Closeable {
    * Turn the Split or Merge switches on or off.
    *
    * @param enabled enabled or not
-   * @param synchronous If true, it waits until current split() call, if outstanding, to return.
+   * @param synchronous If <code>true</code>, it waits until current split() call, if outstanding, to return.
    * @param switchTypes switchType list {@link MasterSwitchType}
    * @return Previous switch value array
+   * @deprecated Since 2.0.0. Will be removed in 3.0.0. Use
+   * {@link #splitOrMergeEnabledSwitch(boolean, boolean, MasterSwitchType...)}.
    */
-  boolean[] setSplitOrMergeEnabled(final boolean enabled, final boolean synchronous,
-                                   final MasterSwitchType... switchTypes) throws IOException;
+  @Deprecated
+  default boolean[] setSplitOrMergeEnabled(boolean enabled, boolean synchronous,
+                                   MasterSwitchType... switchTypes) throws IOException {
+    return splitOrMergeEnabledSwitch(enabled, synchronous, switchTypes);
+  }
+
+  /**
+   * Turn t

<TRUNCATED>