You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2020/02/14 14:44:23 UTC

[hbase-site] branch asf-site updated: Published site at 5f61df479260598ea8f7856b4abc2541c27ed5db.

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 7789026  Published site at 5f61df479260598ea8f7856b4abc2541c27ed5db.
7789026 is described below

commit 7789026affc97914fc495a06dc500d8136e2088b
Author: jenkins <bu...@apache.org>
AuthorDate: Fri Feb 14 14:43:51 2020 +0000

    Published site at 5f61df479260598ea8f7856b4abc2541c27ed5db.
---
 acid-semantics.html                                |     2 +-
 apache_hbase_reference_guide.pdf                   |     4 +-
 apidocs/deprecated-list.html                       |    12 +
 apidocs/index-all.html                             |    14 +-
 apidocs/org/apache/hadoop/hbase/client/Admin.html  |   272 +-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |   250 +-
 .../hadoop/hbase/snapshot/ExportSnapshot.html      |     6 +-
 .../org/apache/hadoop/hbase/client/Admin.html      |  2709 ++-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |  1989 +-
 .../hadoop/hbase/snapshot/ExportSnapshot.html      |   353 +-
 book.html                                          |     2 +-
 bulk-loads.html                                    |     2 +-
 checkstyle-aggregate.html                          | 24302 ++++++++++---------
 checkstyle.rss                                     |     4 +-
 coc.html                                           |     2 +-
 dependencies.html                                  |     2 +-
 dependency-convergence.html                        |     2 +-
 dependency-info.html                               |     2 +-
 dependency-management.html                         |     2 +-
 devapidocs/constant-values.html                    |     4 +-
 devapidocs/deprecated-list.html                    |    12 +
 devapidocs/index-all.html                          |    14 +-
 .../apache/hadoop/hbase/backup/package-tree.html   |     4 +-
 .../org/apache/hadoop/hbase/client/Admin.html      |   272 +-
 .../hadoop/hbase/client/AdminOverAsyncAdmin.html   |     8 +-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |   250 +-
 .../hadoop/hbase/client/AsyncHBaseAdmin.html       |     8 +-
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.html    |     8 +-
 .../apache/hadoop/hbase/client/package-tree.html   |    18 +-
 .../apache/hadoop/hbase/executor/package-tree.html |     2 +-
 .../apache/hadoop/hbase/filter/package-tree.html   |     6 +-
 .../hadoop/hbase/hbtop/field/package-tree.html     |     2 +-
 .../hadoop/hbase/hbtop/terminal/package-tree.html  |     2 +-
 .../org/apache/hadoop/hbase/http/package-tree.html |     2 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |     4 +-
 .../org/apache/hadoop/hbase/ipc/package-tree.html  |     4 +-
 .../master/HMaster.MasterStoppedException.html     |     4 +-
 .../org/apache/hadoop/hbase/master/HMaster.html    |   158 +-
 .../hbase/master/assignment/package-tree.html      |     2 +-
 .../hadoop/hbase/master/balancer/package-tree.html |     2 +-
 .../apache/hadoop/hbase/master/package-tree.html   |     6 +-
 .../hbase/master/procedure/package-tree.html       |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |    14 +-
 .../hadoop/hbase/procedure2/package-tree.html      |     6 +-
 .../hbase/procedure2/store/wal/package-tree.html   |     2 +-
 .../apache/hadoop/hbase/quotas/package-tree.html   |     4 +-
 .../hadoop/hbase/regionserver/package-tree.html    |    18 +-
 .../regionserver/querymatcher/package-tree.html    |     2 +-
 .../hbase/regionserver/wal/package-tree.html       |     2 +-
 .../hadoop/hbase/replication/package-tree.html     |     2 +-
 .../replication/regionserver/package-tree.html     |     2 +-
 .../hadoop/hbase/rest/model/package-tree.html      |     2 +-
 .../hadoop/hbase/security/access/package-tree.html |     6 +-
 .../apache/hadoop/hbase/security/package-tree.html |     2 +-
 .../hadoop/hbase/snapshot/ExportSnapshot.html      |     6 +-
 .../hadoop/hbase/thrift2/client/ThriftAdmin.html   |     8 +-
 .../org/apache/hadoop/hbase/util/package-tree.html |     8 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |     4 +-
 .../org/apache/hadoop/hbase/client/Admin.html      |  2709 ++-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |  1989 +-
 .../master/HMaster.InitializationMonitor.html      |  2065 +-
 .../master/HMaster.MasterStoppedException.html     |  2065 +-
 .../hbase/master/HMaster.RedirectServlet.html      |  2065 +-
 .../master/HMaster.TableDescriptorGetter.html      |  2065 +-
 .../org/apache/hadoop/hbase/master/HMaster.html    |  2065 +-
 .../hbase/snapshot/ExportSnapshot.Counter.html     |   353 +-
 .../snapshot/ExportSnapshot.ExportMapper.html      |   353 +-
 ...apshotInputFormat.ExportSnapshotInputSplit.html |   353 +-
 ...shotInputFormat.ExportSnapshotRecordReader.html |   353 +-
 .../ExportSnapshot.ExportSnapshotInputFormat.html  |   353 +-
 .../hbase/snapshot/ExportSnapshot.Options.html     |   353 +-
 .../hbase/snapshot/ExportSnapshot.Testing.html     |   353 +-
 .../hadoop/hbase/snapshot/ExportSnapshot.html      |   353 +-
 downloads.html                                     |     2 +-
 export_control.html                                |     2 +-
 index.html                                         |     2 +-
 issue-tracking.html                                |     2 +-
 mail-lists.html                                    |     2 +-
 metrics.html                                       |     2 +-
 old_news.html                                      |     2 +-
 plugin-management.html                             |     2 +-
 plugins.html                                       |     2 +-
 poweredbyhbase.html                                |     2 +-
 project-info.html                                  |     2 +-
 project-reports.html                               |     2 +-
 project-summary.html                               |     2 +-
 pseudo-distributed.html                            |     2 +-
 replication.html                                   |     2 +-
 resources.html                                     |     2 +-
 source-repository.html                             |     2 +-
 sponsors.html                                      |     2 +-
 supportingprojects.html                            |     2 +-
 team-list.html                                     |     2 +-
 testdevapidocs/index-all.html                      |    32 +-
 .../apache/hadoop/hbase/backup/package-tree.html   |     2 +-
 .../hadoop/hbase/chaos/actions/package-tree.html   |     2 +-
 .../hbase/class-use/HBaseCommonTestingUtility.html |     7 +-
 .../hbase/class-use/HBaseTestingUtility.html       |   136 +-
 .../hadoop/hbase/http/TestInfoServersACL.html      |    38 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |     2 +-
 .../hadoop/hbase/master/TestMasterShutdown.html    |   113 +-
 .../master/assignment/TestRegionStateStore.html    |    48 +-
 .../master/procedure/TestEnableTableProcedure.html |    18 +-
 .../org/apache/hadoop/hbase/package-tree.html      |     8 +-
 .../hadoop/hbase/procedure2/package-tree.html      |     4 +-
 .../hadoop/hbase/regionserver/package-tree.html    |     4 +-
 .../hadoop/hbase/snapshot/TestExportSnapshot.html  |    18 +-
 .../snapshot/TestExportSnapshotV1NoCluster.html    |    33 +-
 .../org/apache/hadoop/hbase/test/package-tree.html |     4 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |     2 +-
 .../hadoop/hbase/http/TestInfoServersACL.html      |   593 +-
 .../hadoop/hbase/master/TestMasterShutdown.html    |   362 +-
 .../master/assignment/TestRegionStateStore.html    |   235 +-
 .../master/procedure/TestEnableTableProcedure.html |   231 +-
 .../TestExportSnapshot.RegionPredicate.html        |   313 +-
 .../hadoop/hbase/snapshot/TestExportSnapshot.html  |   313 +-
 .../snapshot/TestExportSnapshotV1NoCluster.html    |   182 +-
 117 files changed, 25806 insertions(+), 25594 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 8a5d2d6..efdb159 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -467,7 +467,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-02-13</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-02-14</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 355f18c..8ac4151 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.rc.2, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20200213144406+00'00')
-/CreationDate (D:20200213145455+00'00')
+/ModDate (D:20200214143025+00'00')
+/CreationDate (D:20200214144041+00'00')
 >>
 endobj
 2 0 obj
diff --git a/apidocs/deprecated-list.html b/apidocs/deprecated-list.html
index 995f8a7..3b1f84f 100644
--- a/apidocs/deprecated-list.html
+++ b/apidocs/deprecated-list.html
@@ -871,6 +871,18 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-byte:A-byte:A-boolean-">org.apache.hadoop.hbase.client.AsyncAdmin.mergeRegions(byte[], byte[], boolean)</a>
+<div class="block"><span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0.Use <a href="org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-java.util.List-boolean-"><code>AsyncAdmin.mergeRegions(List, boolean)</code></a>
+             instead.</span></div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A-byte:A-boolean-">org.apache.hadoop.hbase.client.Admin.mergeRegionsAsync(byte[], byte[], boolean)</a>
+<div class="block"><span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0. Multi-region merge feature is now
+             supported. Use <a href="org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A:A-boolean-"><code>Admin.mergeRegionsAsync(byte[][], boolean)</code></a> instead.</span></div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Admin.html#move-byte:A-byte:A-">org.apache.hadoop.hbase.client.Admin.move(byte[], byte[])</a>
 <div class="block"><span class="deprecationComment">since 2.2.0 and will be removed in 4.0.0. Use <a href="org/apache/hadoop/hbase/client/Admin.html#move-byte:A-org.apache.hadoop.hbase.ServerName-"><code>Admin.move(byte[], ServerName)</code></a>
    instead. And if you want to move the region to a random server, please use
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index c9ec0bf..3edc454 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -11037,19 +11037,25 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-byte:A-byte:A-boolean-">mergeRegions(byte[], byte[], boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></dt>
 <dd>
-<div class="block">Merge two regions.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0.Use <a href="org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-java.util.List-boolean-"><code>AsyncAdmin.mergeRegions(List, boolean)</code></a>
+             instead.</span></div>
+</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-java.util.List-boolean-">mergeRegions(List&lt;byte[]&gt;, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></dt>
 <dd>
-<div class="block">Merge regions.</div>
+<div class="block">Merge multiple regions (>=2).</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A-byte:A-boolean-">mergeRegionsAsync(byte[], byte[], boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
 <dd>
-<div class="block">Merge two regions.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0. Multi-region merge feature is now
+             supported. Use <a href="org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A:A-boolean-"><code>Admin.mergeRegionsAsync(byte[][], boolean)</code></a> instead.</span></div>
+</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A:A-boolean-">mergeRegionsAsync(byte[][], boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
 <dd>
-<div class="block">Merge regions.</div>
+<div class="block">Merge multiple regions (>=2).</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#mergeSwitch-boolean-boolean-">mergeSwitch(boolean, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
 <dd>
diff --git a/apidocs/org/apache/hadoop/hbase/client/Admin.html b/apidocs/org/apache/hadoop/hbase/client/Admin.html
index e34f4ff..3394b66 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Admin.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Admin.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":50,"i2":38,"i3":18,"i4":6,"i5":18,"i6":18,"i7":18,"i8":6,"i9":18,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":18,"i20":18,"i21":18,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":38,"i34":38,"i35":18,"i36":6,"i37":18,"i38":18,"i39":6,"i40":6,"i41":6,"i42":6,"i43":18,"i44":6,"i45":18,"i46":6,"i47":6,"i48":6,"i49":18,"i50":6,"i51":6,"i52":18,"i53":6,"i54":18,"i55":6,"i56":6,"i57":18,"i [...]
+var methods = {"i0":6,"i1":50,"i2":38,"i3":18,"i4":6,"i5":18,"i6":18,"i7":18,"i8":6,"i9":18,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":18,"i20":18,"i21":18,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":38,"i34":38,"i35":18,"i36":6,"i37":18,"i38":18,"i39":6,"i40":6,"i41":6,"i42":6,"i43":18,"i44":6,"i45":18,"i46":6,"i47":6,"i48":6,"i49":18,"i50":6,"i51":6,"i52":18,"i53":6,"i54":18,"i55":6,"i56":6,"i57":18,"i [...]
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -1074,7 +1074,7 @@ extends org.apache.hadoop.hbase.Abortable, <a href="https://docs.oracle.com/java
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A:A-boolean-">mergeRegionsAsync</a></span>(byte[][]&nbsp;nameofRegionsToMerge,
                  boolean&nbsp;forcible)</code>
-<div class="block">Merge regions.</div>
+<div class="block">Merge multiple regions (>=2).</div>
 </td>
 </tr>
 <tr id="i147" class="rowColor">
@@ -1082,7 +1082,10 @@ extends org.apache.hadoop.hbase.Abortable, <a href="https://docs.oracle.com/java
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A-byte:A-boolean-">mergeRegionsAsync</a></span>(byte[]&nbsp;nameOfRegionA,
                  byte[]&nbsp;nameOfRegionB,
                  boolean&nbsp;forcible)</code>
-<div class="block">Merge two regions.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0. Multi-region merge feature is now
+             supported. Use <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A:A-boolean-"><code>mergeRegionsAsync(byte[][], boolean)</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 <tr id="i148" class="altColor">
@@ -2984,10 +2987,13 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegionsAsync</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.910">mergeRegionsAsync</a>(byte[]&nbsp;nameOfRegionA,
-                                       byte[]&nbsp;nameOfRegionB,
-                                       boolean&nbsp;forcible)
-                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.913">mergeRegionsAsync</a>(byte[]&nbsp;nameOfRegionA,
+                                                   byte[]&nbsp;nameOfRegionB,
+                                                   boolean&nbsp;forcible)
+                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0. Multi-region merge feature is now
+             supported. Use <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html#mergeRegionsAsync-byte:A:A-boolean-"><code>mergeRegionsAsync(byte[][], boolean)</code></a> instead.</span></div>
 <div class="block">Merge two regions. Asynchronous operation.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3006,14 +3012,10 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegionsAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.929">mergeRegionsAsync</a>(byte[][]&nbsp;nameofRegionsToMerge,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.928">mergeRegionsAsync</a>(byte[][]&nbsp;nameofRegionsToMerge,
                                boolean&nbsp;forcible)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<div class="block">Merge regions. Asynchronous operation.
- <p/>
- You may get a <code>DoNotRetryIOException</code> if you pass more than two regions in but the master
- does not support merging more than two regions. At least till 2.2.0, we still only support
- merging two regions.</div>
+<div class="block">Merge multiple regions (>=2). Asynchronous operation.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>nameofRegionsToMerge</code> - encoded or full name of daughter regions</dd>
@@ -3030,7 +3032,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.937">split</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.936">split</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Split a table. The method will execute split action for each region in table.</div>
 <dl>
@@ -3047,7 +3049,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.945">split</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.944">split</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            byte[]&nbsp;splitPoint)
     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Split a table.</div>
@@ -3066,7 +3068,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegionAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.952">splitRegionAsync</a>(byte[]&nbsp;regionName)
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.951">splitRegionAsync</a>(byte[]&nbsp;regionName)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Split an individual region. Asynchronous operation.</div>
 <dl>
@@ -3083,7 +3085,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegionAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.960">splitRegionAsync</a>(byte[]&nbsp;regionName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.959">splitRegionAsync</a>(byte[]&nbsp;regionName,
                               byte[]&nbsp;splitPoint)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Split an individual region. Asynchronous operation.</div>
@@ -3102,7 +3104,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyTable</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.967">modifyTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.966">modifyTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Modify an existing table, more IRB friendly version.</div>
 <dl>
@@ -3119,7 +3121,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyTableAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.982">modifyTableAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescrip [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.981">modifyTableAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescrip [...]
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">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
@@ -3143,7 +3145,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.991">shutdown</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.990">shutdown</a>()
        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Shuts down the HBase cluster.
  <p/>
@@ -3161,7 +3163,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>stopMaster</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1001">stopMaster</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1000">stopMaster</a>()
          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Shuts down the current HBase master only. Does not shutdown the cluster.
  <p/>
@@ -3181,7 +3183,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>isMasterInMaintenanceMode</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1008">isMasterInMaintenanceMode</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1007">isMasterInMaintenanceMode</a>()
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Check whether Master is in maintenance mode.</div>
 <dl>
@@ -3196,7 +3198,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRegionServer</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1017">stopRegionServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostnamePort)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1016">stopRegionServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostnamePort)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Stop the designated regionserver.</div>
 <dl>
@@ -3214,7 +3216,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterMetrics</h4>
-<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1033">getClusterMetrics</a>()
+<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1032">getClusterMetrics</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get whole cluster metrics, containing status about:
  <pre>
@@ -3240,7 +3242,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterMetrics</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1042">getClusterMetrics</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html?is-external=true" title="class or interface in java.util">EnumSet</a>&lt;org.apache.hadoop.hbase.ClusterMetrics.Option&gt;&nbsp;options)
+<pre><a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1041">getClusterMetrics</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html?is-external=true" title="class or interface in java.util">EnumSet</a>&lt;org.apache.hadoop.hbase.ClusterMetrics.Option&gt;&nbsp;options)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get cluster status with a set of <code>ClusterMetrics.Option</code> to get desired status.</div>
 <dl>
@@ -3257,7 +3259,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaster</h4>
-<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1048">getMaster</a>()
+<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1047">getMaster</a>()
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3273,7 +3275,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupMasters</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1056">getBackupMasters</a>()
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1055">getBackupMasters</a>()
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3289,7 +3291,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServers</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1064">getRegionServers</a>()
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1063">getRegionServers</a>()
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3305,7 +3307,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1075">getRegionMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1074">getRegionMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop. [...]
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get <a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase"><code>RegionMetrics</code></a> of all regions hosted on a regionserver.</div>
 <dl>
@@ -3324,7 +3326,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1085">getRegionMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1084">getRegionMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop. [...]
                                      <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get <a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase"><code>RegionMetrics</code></a> of all regions hosted on a regionserver for a table.</div>
@@ -3345,7 +3347,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1091">getConfiguration</a>()</pre>
+<pre>org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1090">getConfiguration</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Configuration used by the instance.</dd>
@@ -3358,7 +3360,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>createNamespace</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1099">createNamespace</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;descriptor)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1098">createNamespace</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;descriptor)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a new namespace. Blocks until namespace has been successfully created or an exception is
  thrown.</div>
@@ -3376,7 +3378,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>createNamespaceAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1110">createNamespaceAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescr [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1109">createNamespaceAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescr [...]
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a new namespace.</div>
 <dl>
@@ -3396,7 +3398,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyNamespace</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1118">modifyNamespace</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;descriptor)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1117">modifyNamespace</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;descriptor)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Modify an existing namespace. Blocks until namespace has been successfully modified or an
  exception is thrown.</div>
@@ -3414,7 +3416,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyNamespaceAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1129">modifyNamespaceAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescr [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1128">modifyNamespaceAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescr [...]
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Modify an existing namespace.</div>
 <dl>
@@ -3434,7 +3436,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNamespace</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1137">deleteNamespace</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1136">deleteNamespace</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete an existing namespace. Only empty namespaces (no tables) can be removed. Blocks until
  namespace has been successfully deleted or an exception is thrown.</div>
@@ -3452,7 +3454,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNamespaceAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1148">deleteNamespaceAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/S [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1147">deleteNamespaceAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/S [...]
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete an existing namespace. Only empty namespaces (no tables) can be removed.</div>
 <dl>
@@ -3472,7 +3474,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceDescriptor</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1157">getNamespaceDescriptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre><a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1156">getNamespaceDescriptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                                     throws <a href="../../../../../org/apache/hadoop/hbase/NamespaceNotFoundException.html" title="class in org.apache.hadoop.hbase">NamespaceNotFoundException</a>,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get a namespace descriptor by name.</div>
@@ -3493,7 +3495,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>listNamespaces</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1166">listNamespaces</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1165">listNamespaces</a>()
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List available namespaces</div>
 <dl>
@@ -3510,7 +3512,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>listNamespaceDescriptors</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1174">listNamespaceDescriptors</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1173">listNamespaceDescriptors</a>()
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List available namespace descriptors</div>
 <dl>
@@ -3527,7 +3529,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptorsByNamespace</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1182">listTableDescriptorsByNamespace</a>(byte[]&nbsp;name)
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1181">listTableDescriptorsByNamespace</a>(byte[]&nbsp;name)
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get list of table descriptors by namespace.</div>
 <dl>
@@ -3546,7 +3548,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableNamesByNamespace</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1190">listTableNamesByNamespace</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1189">listTableNamesByNamespace</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get list of table names by namespace.</div>
 <dl>
@@ -3565,7 +3567,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1199">getRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1198">getRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop [...]
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the regions of a given table.</div>
 <dl>
@@ -3584,7 +3586,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1202">close</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1201">close</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
@@ -3599,7 +3601,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptors</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1211">listTableDescriptors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-ext [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1210">listTableDescriptors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-ext [...]
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get tableDescriptors.</div>
 <dl>
@@ -3619,7 +3621,7 @@ default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/
 <li class="blockList">
 <h4>abortProcedure</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1227">abortProcedure</a>(long&nbsp;procId,
+default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1226">abortProcedure</a>(long&nbsp;procId,
                                            boolean&nbsp;mayInterruptIfRunning)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.1.1 and will be removed in 4.0.0.</span></div>
@@ -3647,7 +3649,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <li class="blockList">
 <h4>abortProcedureAsync</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1248">abortProcedureAsync</a>(long&nbsp;procId,
+<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1247">abortProcedureAsync</a>(long&nbsp;procId,
                                                 boolean&nbsp;mayInterruptIfRunning)
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.1.1 and will be removed in 4.0.0.</span></div>
@@ -3676,7 +3678,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedures</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1256">getProcedures</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1255">getProcedures</a>()
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get procedures.</div>
 <dl>
@@ -3693,7 +3695,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getLocks</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1263">getLocks</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1262">getLocks</a>()
          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get locks.</div>
 <dl>
@@ -3710,7 +3712,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWALWriter</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1276">rollWALWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1275">rollWALWriter</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FailedLogCloseException</a></pre>
 <div class="block">Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.
@@ -3733,7 +3735,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterCoprocessorNames</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1283">getMasterCoprocessorNames</a>()
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1282">getMasterCoprocessorNames</a>()
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Helper that delegates to getClusterMetrics().getMasterCoprocessorNames().</div>
 <dl>
@@ -3752,7 +3754,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionState</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1296">getCompactionState</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1295">getCompactionState</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the current compaction state of a table. It could be in a major compaction, a minor
  compaction, both, or none.</div>
@@ -3772,7 +3774,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionState</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1306">getCompactionState</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1305">getCompactionState</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                    <a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client">CompactType</a>&nbsp;compactType)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the current compaction state of a table. It could be in a compaction, or none.</div>
@@ -3793,7 +3795,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionStateForRegion</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1317">getCompactionStateForRegion</a>(byte[]&nbsp;regionName)
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1316">getCompactionStateForRegion</a>(byte[]&nbsp;regionName)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the current compaction state of region. It could be in a major compaction, a minor
  compaction, both, or none.</div>
@@ -3813,7 +3815,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestamp</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1329">getLastMajorCompactionTimestamp</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1328">getLastMajorCompactionTimestamp</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the timestamp of the last major compaction for the passed table
 
@@ -3835,7 +3837,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestampForRegion</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1341">getLastMajorCompactionTimestampForRegion</a>(byte[]&nbsp;regionName)
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1340">getLastMajorCompactionTimestampForRegion</a>(byte[]&nbsp;regionName)
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the timestamp of the last major compaction for the passed region.
 
@@ -3857,7 +3859,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1358">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1357">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                       <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                       <a href="../../../../../org/apache/hadoop/hbase/snapshot/SnapshotCreationException.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotCreationException</a>,
@@ -3887,7 +3889,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1378">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1377">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                       <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                       <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client">SnapshotType</a>&nbsp;type)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -3918,7 +3920,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1401">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1400">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                       <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                       <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client">SnapshotType</a>&nbsp;type,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;snapshotProps)
@@ -3952,7 +3954,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1424">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1423">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                       <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;snapshotProps)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -3984,7 +3986,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1445">snapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&nbsp;snapshot)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1444">snapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&nbsp;snapshot)
        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
               <a href="../../../../../org/apache/hadoop/hbase/snapshot/SnapshotCreationException.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotCreationException</a>,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
@@ -4013,7 +4015,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1458">snapshotAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescri [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1457">snapshotAsync</a>(<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescri [...]
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                            <a href="../../../../../org/apache/hadoop/hbase/snapshot/SnapshotCreationException.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotCreationException</a></pre>
 <div class="block">Take a snapshot without waiting for the server to complete that snapshot (asynchronous).
@@ -4035,7 +4037,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>isSnapshotFinished</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1477">isSnapshotFinished</a>(<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&nbsp;snapshot)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1476">isSnapshotFinished</a>(<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&nbsp;snapshot)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                            <a href="../../../../../org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">HBaseSnapshotException</a>,
                            <a href="../../../../../org/apache/hadoop/hbase/snapshot/UnknownSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">UnknownSnapshotException</a></pre>
@@ -4064,7 +4066,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1491">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1490">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                      <a href="../../../../../org/apache/hadoop/hbase/snapshot/RestoreSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">RestoreSnapshotException</a></pre>
 <div class="block">Restore the specified snapshot on the original table. (The table must be disabled) If the
@@ -4088,7 +4090,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1506">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1505">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                              boolean&nbsp;takeFailSafeSnapshot)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                              <a href="../../../../../org/apache/hadoop/hbase/snapshot/RestoreSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">RestoreSnapshotException</a></pre>
@@ -4115,7 +4117,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1525">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1524">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                      boolean&nbsp;takeFailSafeSnapshot,
                      boolean&nbsp;restoreAcl)
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -4144,7 +4146,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1537">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1536">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                            <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                            <a href="../../../../../org/apache/hadoop/hbase/TableExistsException.html" title="class in org.apache.hadoop.hbase">TableExistsException</a>,
@@ -4168,7 +4170,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshot</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1552">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1551">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                            <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                            boolean&nbsp;restoreAcl)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -4194,7 +4196,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshotAsync</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1571">cloneSnapshotAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/ [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1570">cloneSnapshotAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/ [...]
                                         <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                         <a href="../../../../../org/apache/hadoop/hbase/TableExistsException.html" title="class in org.apache.hadoop.hbase">TableExistsException</a></pre>
@@ -4222,7 +4224,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshotAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1586">cloneSnapshotAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Str [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1585">cloneSnapshotAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Str [...]
                                 <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                 boolean&nbsp;restoreAcl)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -4248,7 +4250,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedure</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1599">execProcedure</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1598">execProcedure</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;instance,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;props)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4271,7 +4273,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedureWithReturn</h4>
-<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1613">execProcedureWithReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
+<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1612">execProcedureWithReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;instance,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;props)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4296,7 +4298,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>isProcedureFinished</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1627">isProcedureFinished</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1626">isProcedureFinished</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;instance,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;props)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4321,7 +4323,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1636">listSnapshots</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1635">listSnapshots</a>()
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List completed snapshots.</div>
 <dl>
@@ -4338,7 +4340,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1645">listSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html? [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1644">listSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html? [...]
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List all the completed snapshots matching the given pattern.</div>
 <dl>
@@ -4357,7 +4359,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1655">listTableSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1654">listTableSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern. [...]
                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;snapshotNamePattern)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List all the completed snapshots matching the given table name regular expression and snapshot
@@ -4379,7 +4381,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshot</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1664">deleteSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1663">deleteSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete an existing snapshot.</div>
 <dl>
@@ -4396,7 +4398,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshots</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1672">deleteSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;pattern)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1671">deleteSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;pattern)
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete existing snapshots whose names match the pattern passed.</div>
 <dl>
@@ -4413,7 +4415,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableSnapshots</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1681">deleteTableSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;tableNamePattern,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1680">deleteTableSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;tableNamePattern,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;snapshotNamePattern)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete all existing snapshots matching the given table name regular expression and snapshot
@@ -4433,7 +4435,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>setQuota</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1690">setQuota</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&nbsp;quota)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1689">setQuota</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&nbsp;quota)
        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Apply the new quota settings.</div>
 <dl>
@@ -4450,7 +4452,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuota</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1698">getQuota</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaFilter.html" title="class in org.apac [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1697">getQuota</a>(<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaFilter.html" title="class in org.apac [...]
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List the quotas based on the filter.</div>
 <dl>
@@ -4470,7 +4472,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <li class="blockList">
 <h4>coprocessorService</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-<a href="../../../../../org/apache/hadoop/hbase/ipc/CoprocessorRpcChannel.html" title="interface in org.apache.hadoop.hbase.ipc">CoprocessorRpcChannel</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1719">coprocessorService</a>()</pre>
+<a href="../../../../../org/apache/hadoop/hbase/ipc/CoprocessorRpcChannel.html" title="interface in org.apache.hadoop.hbase.ipc">CoprocessorRpcChannel</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1718">coprocessorService</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any
              more. Use the coprocessorService methods in <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client"><code>AsyncAdmin</code></a> instead.</span></div>
 <div class="block">Creates and returns a <code>RpcChannel</code> instance connected to the active
@@ -4498,7 +4500,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <li class="blockList">
 <h4>coprocessorService</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-<a href="../../../../../org/apache/hadoop/hbase/ipc/CoprocessorRpcChannel.html" title="interface in org.apache.hadoop.hbase.ipc">CoprocessorRpcChannel</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1747">coprocessorService</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<a href="../../../../../org/apache/hadoop/hbase/ipc/CoprocessorRpcChannel.html" title="interface in org.apache.hadoop.hbase.ipc">CoprocessorRpcChannel</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1746">coprocessorService</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any
              more. Use the coprocessorService methods in <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client"><code>AsyncAdmin</code></a> instead.</span></div>
 <div class="block">Creates and returns a <code>RpcChannel</code> instance
@@ -4532,7 +4534,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>updateConfiguration</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1756">updateConfiguration</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1755">updateConfiguration</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Update the configuration and trigger an online config change
  on the regionserver.</div>
@@ -4550,7 +4552,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>updateConfiguration</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1763">updateConfiguration</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1762">updateConfiguration</a>()
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Update the configuration and trigger an online config change
  on all the regionservers.</div>
@@ -4566,7 +4568,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterInfoPort</h4>
-<pre>default&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1770">getMasterInfoPort</a>()
+<pre>default&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1769">getMasterInfoPort</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the info port of the current master if one is available.</div>
 <dl>
@@ -4583,7 +4585,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getSecurityCapabilities</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security">SecurityCapability</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1779">getSecurityCapabilities</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security">SecurityCapability</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1778">getSecurityCapabilities</a>()
                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Return the set of supported security capabilities.</div>
 <dl>
@@ -4599,7 +4601,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>splitSwitch</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1789">splitSwitch</a>(boolean&nbsp;enabled,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1788">splitSwitch</a>(boolean&nbsp;enabled,
                     boolean&nbsp;synchronous)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Turn the split switch on or off.</div>
@@ -4621,7 +4623,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeSwitch</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1799">mergeSwitch</a>(boolean&nbsp;enabled,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1798">mergeSwitch</a>(boolean&nbsp;enabled,
                     boolean&nbsp;synchronous)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Turn the merge switch on or off.</div>
@@ -4643,7 +4645,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplitEnabled</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1806">isSplitEnabled</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1805">isSplitEnabled</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Query the current state of the split switch.</div>
 <dl>
@@ -4660,7 +4662,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>isMergeEnabled</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1813">isMergeEnabled</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1812">isMergeEnabled</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Query the current state of the merge switch.</div>
 <dl>
@@ -4677,7 +4679,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1821">addReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1820">addReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                 <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add a new replication peer for replicating data to slave cluster.</div>
@@ -4696,7 +4698,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1833">addReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1832">addReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                 <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig,
                                 boolean&nbsp;enabled)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4717,7 +4719,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeerAsync</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1850">addReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1849">addReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs [...]
                                              <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add a new replication peer but does not block and wait for it.
@@ -4742,7 +4744,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeerAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1867">addReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lan [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1866">addReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lan [...]
                                      <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig,
                                      boolean&nbsp;enabled)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4769,7 +4771,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeer</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1875">removeReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1874">removeReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Remove a peer and stop the replication.</div>
 <dl>
@@ -4786,7 +4788,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeerAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1890">removeReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1889">removeReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/ [...]
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Remove a replication peer but does not block and wait for it.
  <p>
@@ -4809,7 +4811,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>enableReplicationPeer</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1897">enableReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1896">enableReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Restart the replication stream to the specified peer.</div>
 <dl>
@@ -4826,7 +4828,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>enableReplicationPeerAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1911">enableReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1910">enableReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/ [...]
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Enable a replication peer but does not block and wait for it.
  <p>
@@ -4849,7 +4851,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>disableReplicationPeer</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1918">disableReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1917">disableReplicationPeer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Stop the replication stream to the specified peer.</div>
 <dl>
@@ -4866,7 +4868,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>disableReplicationPeerAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1932">disableReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1931">disableReplicationPeerAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java [...]
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Disable a replication peer but does not block and wait for it.
  <p/>
@@ -4889,7 +4891,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerConfig</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1940">getReplicationPeerConfig</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1939">getReplicationPeerConfig</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns the configured ReplicationPeerConfig for the specified peer.</div>
 <dl>
@@ -4908,7 +4910,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReplicationPeerConfig</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1948">updateReplicationPeerConfig</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1947">updateReplicationPeerConfig</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                          <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Update the peerConfig for the specified peer.</div>
@@ -4927,7 +4929,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReplicationPeerConfigAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1965">updateReplicationPeerConfigAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1964">updateReplicationPeerConfigAsync</a>(<a href="https://docs.oracle.com/javase/8/docs/api [...]
                                               <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Update the peerConfig for the specified peer but does not block and wait for it.
@@ -4952,7 +4954,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>appendReplicationPeerTableCFs</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1975">appendReplicationPeerTableCFs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1974">appendReplicationPeerTableCFs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api [...]
                                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4973,7 +4975,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeerTableCFs</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1993">removeReplicationPeerTableCFs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.1992">removeReplicationPeerTableCFs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api [...]
                                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4994,7 +4996,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2009">listReplicationPeers</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2008">listReplicationPeers</a>()
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Return a list of replication peers.</div>
 <dl>
@@ -5011,7 +5013,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2017">listReplicationPeers</a>(<a href="https://docs.oracle.com/javase/8/docs/ap [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2016">listReplicationPeers</a>(<a href="https://docs.oracle.com/javase/8/docs/ap [...]
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Return a list of replication peers.</div>
 <dl>
@@ -5030,7 +5032,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>transitReplicationPeerSyncReplicationState</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2025">transitReplicationPeerSyncReplicationState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2024">transitReplicationPeerSyncReplicationState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                                         <a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;state)
                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Transit current cluster to a new state in a synchronous replication peer.</div>
@@ -5049,7 +5051,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>transitReplicationPeerSyncReplicationStateAsync</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2042">transitReplicationPeerSyncReplicationStateAsync</a>(<a href="https://docs.oracle.com/ja [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2041">transitReplicationPeerSyncReplicationStateAsync</a>(<a href="https://docs.oracle.com/ja [...]
                                                              <a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;state)
                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Transit current cluster to a new state in a synchronous replication peer. But does not block
@@ -5073,7 +5075,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerSyncReplicationState</h4>
-<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2051">getReplicationPeerSyncReplicationState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2050">getReplicationPeerSyncReplicationState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the current cluster state in a synchronous replication peer.</div>
 <dl>
@@ -5092,7 +5094,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>decommissionRegionServers</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2069">decommissionRegionServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2068">decommissionRegionServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers,
                                boolean&nbsp;offload)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Mark region server(s) as decommissioned to prevent additional regions from getting
@@ -5114,7 +5116,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listDecommissionedRegionServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2076">listDecommissionedRegionServers</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2075">listDecommissionedRegionServers</a>()
                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List region servers marked as decommissioned, which can not be assigned regions.</div>
 <dl>
@@ -5131,7 +5133,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>recommissionRegionServer</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2086">recommissionRegionServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2085">recommissionRegionServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Remove decommission marker from a region server to allow regions assignments.
@@ -5152,7 +5154,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicatedTableCFs</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/replication/TableCFs.html" title="class in org.apache.hadoop.hbase.client.replication">TableCFs</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2094">listReplicatedTableCFs</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/replication/TableCFs.html" title="class in org.apache.hadoop.hbase.client.replication">TableCFs</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2093">listReplicatedTableCFs</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Find all table and column families that are replicated from this cluster</div>
 <dl>
@@ -5169,7 +5171,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTableReplication</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2101">enableTableReplication</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2100">enableTableReplication</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Enable a table's replication switch.</div>
 <dl>
@@ -5186,7 +5188,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTableReplication</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2108">disableTableReplication</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2107">disableTableReplication</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Disable a table's replication switch.</div>
 <dl>
@@ -5203,7 +5205,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactionQueues</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2117">clearCompactionQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2116">clearCompactionQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;queues)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -5224,7 +5226,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>listDeadServers</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2124">listDeadServers</a>()
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2123">listDeadServers</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">List dead region servers.</div>
 <dl>
@@ -5241,7 +5243,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>clearDeadServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2134">clearDeadServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or inte [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2133">clearDeadServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or inte [...]
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Clear dead region servers from master.</div>
 <dl>
@@ -5260,7 +5262,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneTableSchema</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2143">cloneTableSchema</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2142">cloneTableSchema</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                       <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;newTableName,
                       boolean&nbsp;preserveSplits)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -5281,7 +5283,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>switchRpcThrottle</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2152">switchRpcThrottle</a>(boolean&nbsp;enable)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2151">switchRpcThrottle</a>(boolean&nbsp;enable)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Switch the rpc throttle enable state.</div>
 <dl>
@@ -5300,7 +5302,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>isRpcThrottleEnabled</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2159">isRpcThrottleEnabled</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2158">isRpcThrottleEnabled</a>()
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get if the rpc throttle is enabled.</div>
 <dl>
@@ -5317,7 +5319,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>exceedThrottleQuotaSwitch</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2168">exceedThrottleQuotaSwitch</a>(boolean&nbsp;enable)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2167">exceedThrottleQuotaSwitch</a>(boolean&nbsp;enable)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota
  can be exceeded if region server has availble quota.</div>
@@ -5337,7 +5339,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getSpaceQuotaTableSizes</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.21 [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.21 [...]
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Fetches the table sizes on the filesystem as tracked by the HBase Master.</div>
 <dl>
@@ -5352,7 +5354,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServerSpaceQuotaSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,? extends <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/had [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,? extends <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/had [...]
                                                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Fetches the observed <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas"><code>SpaceQuotaSnapshotView</code></a>s observed by a RegionServer.</div>
 <dl>
@@ -5367,7 +5369,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentSpaceQuotaSnapshot</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2188">getCurrentSpaceQuotaSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)
+<pre><a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2187">getCurrentSpaceQuotaSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)
                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns the Master's view of a quota on the given <code>namespace</code> or null if the Master has
  no quota information on that namespace.</div>
@@ -5383,7 +5385,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentSpaceQuotaSnapshot</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2195">getCurrentSpaceQuotaSnapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre><a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2194">getCurrentSpaceQuotaSnapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns the Master's view of a quota on the given <code>tableName</code> or null if the Master has
  no quota information on that table.</div>
@@ -5399,7 +5401,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>grant</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2205">grant</a>(org.apache.hadoop.hbase.security.access.UserPermission&nbsp;userPermission,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2204">grant</a>(org.apache.hadoop.hbase.security.access.UserPermission&nbsp;userPermission,
            boolean&nbsp;mergeExistingPermissions)
     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Grants user specific permissions</div>
@@ -5420,7 +5422,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>revoke</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2212">revoke</a>(org.apache.hadoop.hbase.security.access.UserPermission&nbsp;userPermission)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2211">revoke</a>(org.apache.hadoop.hbase.security.access.UserPermission&nbsp;userPermission)
      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Revokes user specific permissions</div>
 <dl>
@@ -5437,7 +5439,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserPermissions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2221">getUserPermissions</a>(org.apache.hadoop.hbase.security.access.GetUserPermissionsRequest&nbsp;getUserPermissionsRequest)
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2220">getUserPermissions</a>(org.apache.hadoop.hbase.security.access.GetUserPermissionsRequest&nbsp;getUserPermissionsRequest)
                                                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the global/namespace/table permissions for user</div>
 <dl>
@@ -5457,7 +5459,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>hasUserPermissions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2231">hasUserPermissions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2230">hasUserPermissions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external [...]
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.Permission&gt;&nbsp;permissions)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Check if the user has specific permissions</div>
@@ -5478,7 +5480,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>hasUserPermissions</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2240">hasUserPermissions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html? [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2239">hasUserPermissions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html? [...]
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Check if call user has specific permissions</div>
 <dl>
@@ -5497,7 +5499,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotCleanupSwitch</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2253">snapshotCleanupSwitch</a>(boolean&nbsp;on,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2252">snapshotCleanupSwitch</a>(boolean&nbsp;on,
                               boolean&nbsp;synchronous)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Turn on or off the auto snapshot cleanup based on TTL.</div>
@@ -5519,7 +5521,7 @@ default&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isSnapshotCleanupEnabled</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2263">isSnapshotCleanupEnabled</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Admin.html#line.2262">isSnapshotCleanupEnabled</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Query the current state of the auto snapshot cleanup based on TTL.</div>
 <dl>
diff --git a/apidocs/org/apache/hadoop/hbase/client/AsyncAdmin.html b/apidocs/org/apache/hadoop/hbase/client/AsyncAdmin.html
index f95d4b7..eb989da 100644
--- a/apidocs/org/apache/hadoop/hbase/client/AsyncAdmin.html
+++ b/apidocs/org/apache/hadoop/hbase/client/AsyncAdmin.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":38,"i1":6,"i2":18,"i3":6,"i4":6,"i5":6,"i6":18,"i7":6,"i8":18,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":18,"i16":6,"i17":6,"i18":18,"i19":18,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":18,"i54":6,"i55":6,"i56":18,"i57":6,"i58":6,"i59": [...]
+var methods = {"i0":38,"i1":6,"i2":18,"i3":6,"i4":6,"i5":6,"i6":18,"i7":6,"i8":18,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":18,"i16":6,"i17":6,"i18":18,"i19":18,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":18,"i54":6,"i55":6,"i56":18,"i57":6,"i58":6,"i59": [...]
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -919,14 +919,17 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-byte:A-byte:A-boolean-">mergeRegions</a></span>(byte[]&nbsp;nameOfRegionA,
             byte[]&nbsp;nameOfRegionB,
             boolean&nbsp;forcible)</code>
-<div class="block">Merge two regions.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0.Use <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-java.util.List-boolean-"><code>mergeRegions(List, boolean)</code></a>
+             instead.</span></div>
+</div>
 </td>
 </tr>
 <tr id="i127" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-java.util.List-boolean-">mergeRegions</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;nameOfRegionsToMerge,
             boolean&nbsp;forcible)</code>
-<div class="block">Merge regions.</div>
+<div class="block">Merge multiple regions (>=2).</div>
 </td>
 </tr>
 <tr id="i128" class="altColor">
@@ -2129,9 +2132,12 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegions</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.517">mergeRegions</a>(byte[]&nbsp;nameOfRegionA,
-                                             byte[]&nbsp;nameOfRegionB,
-                                             boolean&nbsp;forcible)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.520">mergeRegions</a>(byte[]&nbsp;nameOfRegionA,
+                                                         byte[]&nbsp;nameOfRegionB,
+                                                         boolean&nbsp;forcible)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.3.0 and will be removed in 4.0.0.Use <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-java.util.List-boolean-"><code>mergeRegions(List, boolean)</code></a>
+             instead.</span></div>
 <div class="block">Merge two regions.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2148,13 +2154,9 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.532">mergeRegions</a>(<a href="https://docs.oracle.com/javase/8/do [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.531">mergeRegions</a>(<a href="https://docs.oracle.com/javase/8/do [...]
                                      boolean&nbsp;forcible)</pre>
-<div class="block">Merge regions.
- <p/>
- You may get a <code>DoNotRetryIOException</code> if you pass more than two regions in but the master
- does not support merging more than two regions. At least till 2.2.0, we still only support
- merging two regions.</div>
+<div class="block">Merge multiple regions (>=2).</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>nameOfRegionsToMerge</code> - encoded or full name of daughter regions</dd>
@@ -2169,7 +2171,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.538">split</a>(<a href="../../../../../org/apache/hadoop/hbase/Tab [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.537">split</a>(<a href="../../../../../org/apache/hadoop/hbase/Tab [...]
 <div class="block">Split a table. The method will execute split action for each region in table.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2183,7 +2185,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.544">splitRegion</a>(byte[]&nbsp;regionName)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.543">splitRegion</a>(byte[]&nbsp;regionName)</pre>
 <div class="block">Split an individual region.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2197,7 +2199,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.551">split</a>(<a href="../../../../../org/apache/hadoop/hbase/Tab [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.550">split</a>(<a href="../../../../../org/apache/hadoop/hbase/Tab [...]
                               byte[]&nbsp;splitPoint)</pre>
 <div class="block">Split a table.</div>
 <dl>
@@ -2213,7 +2215,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.559">splitRegion</a>(byte[]&nbsp;regionName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.558">splitRegion</a>(byte[]&nbsp;regionName,
                                     byte[]&nbsp;splitPoint)</pre>
 <div class="block">Split an individual region.</div>
 <dl>
@@ -2230,7 +2232,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>assign</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.564">assign</a>(byte[]&nbsp;regionName)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.563">assign</a>(byte[]&nbsp;regionName)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>regionName</code> - Encoded or full name of region to assign.</dd>
@@ -2243,7 +2245,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>unassign</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.576">unassign</a>(byte[]&nbsp;regionName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.575">unassign</a>(byte[]&nbsp;regionName,
                                  boolean&nbsp;forcible)</pre>
 <div class="block">Unassign a region from current hosting regionserver. Region will then be assigned to a
  regionserver chosen at random. Region could be reassigned back to the same server. Use
@@ -2264,7 +2266,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>offline</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.586">offline</a>(byte[]&nbsp;regionName)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.585">offline</a>(byte[]&nbsp;regionName)</pre>
 <div class="block">Offline specified region from master's in-memory state. It will not attempt to reassign the
  region as in unassign. This API can be used when a region not served by any region server and
  still online as per Master's in memory state. If this API is incorrectly used on active region
@@ -2282,7 +2284,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>move</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.592">move</a>(byte[]&nbsp;regionName)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.591">move</a>(byte[]&nbsp;regionName)</pre>
 <div class="block">Move the region <code>r</code> to a random server.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2296,7 +2298,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>move</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.601">move</a>(byte[]&nbsp;regionName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.600">move</a>(byte[]&nbsp;regionName,
                              <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServerName)</pre>
 <div class="block">Move the region <code>r</code> to <code>dest</code>.</div>
 <dl>
@@ -2314,7 +2316,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>setQuota</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.607">setQuota</a>(<a href="../../../../../org/apache/hadoop/hbase/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.606">setQuota</a>(<a href="../../../../../org/apache/hadoop/hbase/ [...]
 <div class="block">Apply the new quota settings.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2328,7 +2330,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuota</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&gt;&gt;&nbsp;<a  [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&gt;&gt;&nbsp;<a  [...]
 <div class="block">List the quotas based on the filter.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2344,7 +2346,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.621">addReplicationPeer</a>(<a href="https://docs.ora [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.620">addReplicationPeer</a>(<a href="https://docs.ora [...]
                                                    <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</pre>
 <div class="block">Add a new replication peer for replicating data to slave cluster</div>
 <dl>
@@ -2360,7 +2362,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.632">addReplicationPeer</a>(<a href="https://docs.oracle.com/javas [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.631">addReplicationPeer</a>(<a href="https://docs.oracle.com/javas [...]
                                            <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig,
                                            boolean&nbsp;enabled)</pre>
 <div class="block">Add a new replication peer for replicating data to slave cluster</div>
@@ -2378,7 +2380,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeer</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.639">removeReplicationPeer</a>(<a href="https://docs.oracle.com/ja [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.638">removeReplicationPeer</a>(<a href="https://docs.oracle.com/ja [...]
 <div class="block">Remove a peer and stop the replication</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2392,7 +2394,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>enableReplicationPeer</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.645">enableReplicationPeer</a>(<a href="https://docs.oracle.com/ja [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.644">enableReplicationPeer</a>(<a href="https://docs.oracle.com/ja [...]
 <div class="block">Restart the replication stream to the specified peer</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2406,7 +2408,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>disableReplicationPeer</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.651">disableReplicationPeer</a>(<a href="https://docs.oracle.com/j [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.650">disableReplicationPeer</a>(<a href="https://docs.oracle.com/j [...]
 <div class="block">Stop the replication stream to the specified peer</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2420,7 +2422,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerConfig</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.658">getReplicationPeerConfig</a>(<a  [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.657">getReplicationPeerConfig</a>(<a  [...]
 <div class="block">Returns the configured ReplicationPeerConfig for the specified peer</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2436,7 +2438,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReplicationPeerConfig</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.665">updateReplicationPeerConfig</a>(<a href="https://docs.oracle. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.664">updateReplicationPeerConfig</a>(<a href="https://docs.oracle. [...]
                                                     <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</pre>
 <div class="block">Update the peerConfig for the specified peer</div>
 <dl>
@@ -2452,7 +2454,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>transitReplicationPeerSyncReplicationState</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.673">transitReplicationPeerSyncReplicationState</a>(<a href="https [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.672">transitReplicationPeerSyncReplicationState</a>(<a href="https [...]
                                                                    <a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;state)</pre>
 <div class="block">Transit current cluster to a new state in a synchronous replication peer.</div>
 <dl>
@@ -2468,7 +2470,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerSyncReplicationState</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.681">getReplicationPeerSync [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.680">getReplicationPeerSync [...]
 <div class="block">Get the current cluster state in a synchronous replication peer.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2484,7 +2486,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>appendReplicationPeerTableCFs</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.702">appendReplicationPeerTableCFs</a>(<a href="https://docs.oracl [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.701">appendReplicationPeerTableCFs</a>(<a href="https://docs.oracl [...]
                                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase [...]
 <div class="block">Append the replicable table-cf config of the specified peer</div>
 <dl>
@@ -2500,7 +2502,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeerTableCFs</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.710">removeReplicationPeerTableCFs</a>(<a href="https://docs.oracl [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.709">removeReplicationPeerTableCFs</a>(<a href="https://docs.oracl [...]
                                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase [...]
 <div class="block">Remove some table-cfs from config of the specified peer</div>
 <dl>
@@ -2516,7 +2518,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">Replication [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">Replication [...]
 <div class="block">Return a list of replication peers.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2531,7 +2533,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">Replication [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">Replication [...]
 <div class="block">Return a list of replication peers.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2548,7 +2550,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicatedTableCFs</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/replication/TableCFs.html" title="class in org.apache.hadoop.hbase.client.replication">TableCFs</a>&gt [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/replication/TableCFs.html" title="class in org.apache.hadoop.hbase.client.replication">TableCFs</a>&gt [...]
 <div class="block">Find all table and column families that are replicated from this cluster</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2563,7 +2565,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTableReplication</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.739">enableTableReplication</a>(<a href="../../../../../org/apache [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.738">enableTableReplication</a>(<a href="../../../../../org/apache [...]
 <div class="block">Enable a table's replication switch.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2577,7 +2579,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTableReplication</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.745">disableTableReplication</a>(<a href="../../../../../org/apach [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.744">disableTableReplication</a>(<a href="../../../../../org/apach [...]
 <div class="block">Disable a table's replication switch.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2591,7 +2593,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.759">snapshot</a>(<a href="https://docs.oracle.com/ja [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.758">snapshot</a>(<a href="https://docs.oracle.com/ja [...]
                                          <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block">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. Snapshots are taken
@@ -2614,7 +2616,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.776">snapshot</a>(<a href="https://docs.oracle.com/ja [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.775">snapshot</a>(<a href="https://docs.oracle.com/ja [...]
                                          <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                          <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client">SnapshotType</a>&nbsp;type)</pre>
 <div class="block">Create typed snapshot of the table. Snapshots are considered unique based on <b>the name of the
@@ -2639,7 +2641,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.793">snapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.792">snapshot</a>(<a href="../../../../../org/apache/hadoop/hbase/ [...]
 <div class="block">Take a snapshot and wait for the server to complete that snapshot asynchronously. Snapshots
  are taken sequentially even when requested concurrently, across all tables. Snapshots are
  considered unique based on <b>the name of the snapshot</b>.
@@ -2661,7 +2663,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isSnapshotFinished</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.809">isSnapshotFinished</a>(<a href="../../../../../org/apac [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.808">isSnapshotFinished</a>(<a href="../../../../../org/apac [...]
 <div class="block">Check the current state of the passed snapshot. There are three possible states:
  <ol>
  <li>running - returns <tt>false</tt></li>
@@ -2686,7 +2688,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.819">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8 [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.818">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8 [...]
 <div class="block">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
  snapshot of the current table is taken before executing the restore operation. In case of
@@ -2704,7 +2706,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.831">restoreSnapshot</a>(<a href="https://docs.oracle [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.830">restoreSnapshot</a>(<a href="https://docs.oracle [...]
                                                 boolean&nbsp;takeFailSafeSnapshot)</pre>
 <div class="block">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
@@ -2725,7 +2727,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.847">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8 [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.846">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8 [...]
                                         boolean&nbsp;takeFailSafeSnapshot,
                                         boolean&nbsp;restoreAcl)</pre>
 <div class="block">Restore the specified snapshot on the original table. (The table must be disabled) If
@@ -2748,7 +2750,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshot</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.855">cloneSnapshot</a>(<a href="https://docs.oracle.c [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.854">cloneSnapshot</a>(<a href="https://docs.oracle.c [...]
                                               <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block">Create a new table by cloning the snapshot content.</div>
 <dl>
@@ -2764,7 +2766,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.865">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/d [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.864">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/d [...]
                                       <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                       boolean&nbsp;restoreAcl)</pre>
 <div class="block">Create a new table by cloning the snapshot content.</div>
@@ -2782,7 +2784,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
 <div class="block">List completed snapshots.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2797,7 +2799,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
 <div class="block">List all the completed snapshots matching the given pattern.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2813,7 +2815,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
 <div class="block">List all the completed snapshots matching the given table name pattern.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2830,7 +2832,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescription</a>&gt;& [...]
                                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;snapshotNamePattern)</pre>
 <div class="block">List all the completed snapshots matching the given table name regular expression and snapshot
  name regular expression.</div>
@@ -2850,7 +2852,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.905">deleteSnapshot</a>(<a href="https://docs.oracle.com/javase/8/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.904">deleteSnapshot</a>(<a href="https://docs.oracle.com/javase/8/ [...]
 <div class="block">Delete an existing snapshot.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2864,7 +2866,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.910">deleteSnapshots</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.909">deleteSnapshots</a>()</pre>
 <div class="block">Delete all existing snapshots.</div>
 </li>
 </ul>
@@ -2874,7 +2876,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.916">deleteSnapshots</a>(<a href="https://docs.oracle.com/javase/8 [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.915">deleteSnapshots</a>(<a href="https://docs.oracle.com/javase/8 [...]
 <div class="block">Delete existing snapshots whose names match the pattern passed.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2888,7 +2890,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.922">deleteTableSnapshots</a>(<a href="https://docs.oracle.com/jav [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.921">deleteTableSnapshots</a>(<a href="https://docs.oracle.com/jav [...]
 <div class="block">Delete all existing snapshots matching the given table name pattern.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2902,7 +2904,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.930">deleteTableSnapshots</a>(<a href="https://docs.oracle.com/jav [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.929">deleteTableSnapshots</a>(<a href="https://docs.oracle.com/jav [...]
                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;snapshotNamePattern)</pre>
 <div class="block">Delete all existing snapshots matching the given table name regular expression and snapshot
  name regular expression.</div>
@@ -2919,7 +2921,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedure</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.941">execProcedure</a>(<a href="https://docs.oracle.com/javase/8/d [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.940">execProcedure</a>(<a href="https://docs.oracle.com/javase/8/d [...]
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;instance,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;props)</pre>
 <div class="block">Execute a distributed procedure on a cluster.</div>
@@ -2939,7 +2941,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedureWithReturn</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.953">execProcedureWithReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.952">execProcedureWithReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;signature,
                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;instance,
                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;props)</pre>
 <div class="block">Execute a distributed procedure on a cluster.</div>
@@ -2961,7 +2963,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isProcedureFinished</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.969">isProcedureFinished</a>(<a href="https://docs.oracle.co [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.968">isProcedureFinished</a>(<a href="https://docs.oracle.co [...]
                                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;instance,
                                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;props)</pre>
 <div class="block">Check the current state of the specified procedure. There are three possible states:
@@ -2988,7 +2990,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <li class="blockList">
 <h4>abortProcedure</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.983">abortProcedure</a>(long&nbsp;procId,
+<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.982">abortProcedure</a>(long&nbsp;procId,
                                                       boolean&nbsp;mayInterruptIfRunning)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.1.1 and will be removed in 4.0.0.</span></div>
 <div class="block">Abort a procedure
@@ -3011,7 +3013,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedures</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.989">getProcedures</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.988">getProcedures</a>()</pre>
 <div class="block">List procedures</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3025,7 +3027,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getLocks</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.995">getLocks</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.994">getLocks</a>()</pre>
 <div class="block">List locks.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3039,7 +3041,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>decommissionRegionServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1005">decommissionRegionServers</a>(<a href="https://docs.oracle.c [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1004">decommissionRegionServers</a>(<a href="https://docs.oracle.c [...]
                                                   boolean&nbsp;offload)</pre>
 <div class="block">Mark region server(s) as decommissioned to prevent additional regions from getting
  assigned to them. Optionally unload the regions on the servers. If there are multiple servers
@@ -3058,7 +3060,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listDecommissionedRegionServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../.. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../.. [...]
 <div class="block">List region servers marked as decommissioned, which can not be assigned regions.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3072,7 +3074,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>recommissionRegionServer</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1019">recommissionRegionServer</a>(<a href="../../../../../org/apa [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1018">recommissionRegionServer</a>(<a href="../../../../../org/apa [...]
                                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)</pre>
 <div class="block">Remove decommission marker from a region server to allow regions assignments. Load regions onto
  the server if a list of regions is given. Region loading is asynchronous.</div>
@@ -3089,7 +3091,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterMetrics</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1025">getClusterMetrics</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1024">getClusterMetrics</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>cluster status wrapped by <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a></dd>
@@ -3102,7 +3104,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterMetrics</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1030">getClusterMetrics</a>(<a href="https://docs.oracle.com/javase/8/d [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1029">getClusterMetrics</a>(<a href="https://docs.oracle.com/javase/8/d [...]
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>cluster status wrapped by <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a></dd>
@@ -3115,7 +3117,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaster</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1035">getMaster</a>()</pre>
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1034">getMaster</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>current master server name wrapped by <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a></dd>
@@ -3128,7 +3130,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupMasters</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbs [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbs [...]
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>current backup master list wrapped by <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a></dd>
@@ -3141,7 +3143,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServers</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbs [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbs [...]
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>current live region servers list wrapped by <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a></dd>
@@ -3154,7 +3156,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterCoprocessorNames</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt [...]
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a list of master coprocessors wrapped by <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a></dd>
@@ -3167,7 +3169,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterInfoPort</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1067">getMasterInfoPort</a>()</pre>
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1066">getMasterInfoPort</a>()</pre>
 <div class="block">Get the info port of the current master if one is available.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3181,7 +3183,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1075">shutdown</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1074">shutdown</a>()</pre>
 <div class="block">Shuts down the HBase cluster.</div>
 </li>
 </ul>
@@ -3191,7 +3193,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>stopMaster</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1080">stopMaster</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1079">stopMaster</a>()</pre>
 <div class="block">Shuts down the current HBase master only.</div>
 </li>
 </ul>
@@ -3201,7 +3203,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRegionServer</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1086">stopRegionServer</a>(<a href="../../../../../org/apache/hado [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1085">stopRegionServer</a>(<a href="../../../../../org/apache/hado [...]
 <div class="block">Stop the designated regionserver.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3215,7 +3217,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>updateConfiguration</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1092">updateConfiguration</a>(<a href="../../../../../org/apache/h [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1091">updateConfiguration</a>(<a href="../../../../../org/apache/h [...]
 <div class="block">Update the configuration and trigger an online config change on the regionserver.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3229,7 +3231,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>updateConfiguration</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1098">updateConfiguration</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1097">updateConfiguration</a>()</pre>
 <div class="block">Update the configuration and trigger an online config change on all the masters and
  regionservers.</div>
 </li>
@@ -3240,7 +3242,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWALWriter</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1109">rollWALWriter</a>(<a href="../../../../../org/apache/hadoop/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1108">rollWALWriter</a>(<a href="../../../../../org/apache/hadoop/ [...]
 <div class="block">Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.
  <p>
  When the returned CompletableFuture is done, it only means the rollWALWriter request was sent
@@ -3259,7 +3261,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactionQueues</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1116">clearCompactionQueues</a>(<a href="../../../../../org/apache [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1115">clearCompactionQueues</a>(<a href="../../../../../org/apache [...]
                                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;queues)</pre>
 <div class="block">Clear compacting queues on a region server.</div>
 <dl>
@@ -3275,7 +3277,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;<a href="../. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;<a href="../. [...]
 <div class="block">Get a list of <a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase"><code>RegionMetrics</code></a> of all regions hosted on a region seerver.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3291,7 +3293,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;<a href="../. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;<a href="../. [...]
                                                         <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block">Get a list of <a href="../../../../../org/apache/hadoop/hbase/RegionMetrics.html" title="interface in org.apache.hadoop.hbase"><code>RegionMetrics</code></a> of all regions hosted on a region seerver for a table.</div>
 <dl>
@@ -3309,7 +3311,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isMasterInMaintenanceMode</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1139">isMasterInMaintenanceMode</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1138">isMasterInMaintenanceMode</a>()</pre>
 <div class="block">Check whether master is in maintenance mode</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3324,7 +3326,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionState</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1147">getCompactionState</a>(<a href="../../../ [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1146">getCompactionState</a>(<a href="../../../ [...]
 <div class="block">Get the current compaction state of a table. It could be in a major compaction, a minor
  compaction, both, or none.</div>
 <dl>
@@ -3341,7 +3343,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionState</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1158">getCompactionState</a>(<a href="../../../../../org/apa [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1157">getCompactionState</a>(<a href="../../../../../org/apa [...]
                                                       <a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client">CompactType</a>&nbsp;compactType)</pre>
 <div class="block">Get the current compaction state of a table. It could be in a major compaction, a minor
  compaction, both, or none.</div>
@@ -3360,7 +3362,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionStateForRegion</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1167">getCompactionStateForRegion</a>(byte[]&nbsp;regionName)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client">CompactionState</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1166">getCompactionStateForRegion</a>(byte[]&nbsp;regionName)</pre>
 <div class="block">Get the current compaction state of region. It could be in a major compaction, a minor
  compaction, both, or none.</div>
 <dl>
@@ -3377,7 +3379,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestamp</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbs [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbs [...]
 <div class="block">Get the timestamp of the last major compaction for the passed table.
  <p>
  The timestamp of the oldest HFile resulting from a major compaction of that table, or not
@@ -3396,7 +3398,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestampForRegion</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbs [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbs [...]
 <div class="block">Get the timestamp of the last major compaction for the passed region.
  <p>
  The timestamp of the oldest HFile resulting from a major compaction of that region, or not
@@ -3415,7 +3417,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getSecurityCapabilities</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security">SecurityCapa [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security">SecurityCapa [...]
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the list of supported security capabilities. The return value will be wrapped by a
@@ -3429,7 +3431,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerSwitch</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1200">balancerSwitch</a>(boolean&nbsp;on)</pre>
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1199">balancerSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block">Turn the load balancer on or off.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3445,7 +3447,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1215">balancerSwitch</a>(boolean&nbsp;on,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1214">balancerSwitch</a>(boolean&nbsp;on,
                                           boolean&nbsp;drainRITs)</pre>
 <div class="block">Turn the load balancer on or off.
  <p/>
@@ -3468,7 +3470,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>balance</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1223">balance</a>()</pre>
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1222">balance</a>()</pre>
 <div class="block">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.</div>
 <dl>
@@ -3484,7 +3486,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>balance</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1235">balance</a>(boolean&nbsp;forcible)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1234">balance</a>(boolean&nbsp;forcible)</pre>
 <div class="block">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.</div>
@@ -3503,7 +3505,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isBalancerEnabled</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1242">isBalancerEnabled</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1241">isBalancerEnabled</a>()</pre>
 <div class="block">Query the current state of the balancer.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3518,7 +3520,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizerSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1249">normalizerSwitch</a>(boolean&nbsp;on)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1248">normalizerSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block">Set region normalizer on/off.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3534,7 +3536,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isNormalizerEnabled</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1256">isNormalizerEnabled</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1255">isNormalizerEnabled</a>()</pre>
 <div class="block">Query the current state of the region normalizer</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3549,7 +3551,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>normalize</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1263">normalize</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1262">normalize</a>()</pre>
 <div class="block">Invoke region normalizer. Can NOT run for various reasons. Check logs.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3564,7 +3566,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanerChoreSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1270">cleanerChoreSwitch</a>(boolean&nbsp;on)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1269">cleanerChoreSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block">Turn the cleaner chore on/off.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3580,7 +3582,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isCleanerChoreEnabled</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1277">isCleanerChoreEnabled</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1276">isCleanerChoreEnabled</a>()</pre>
 <div class="block">Query the current state of the cleaner chore.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3595,7 +3597,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>runCleanerChore</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1284">runCleanerChore</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1283">runCleanerChore</a>()</pre>
 <div class="block">Ask for cleaner chore to run.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3610,7 +3612,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1291">catalogJanitorSwitch</a>(boolean&nbsp;on)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1290">catalogJanitorSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block">Turn the catalog janitor on/off.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3626,7 +3628,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isCatalogJanitorEnabled</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1298">isCatalogJanitorEnabled</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1297">isCatalogJanitorEnabled</a>()</pre>
 <div class="block">Query on the catalog janitor state.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3641,7 +3643,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>runCatalogJanitor</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1305">runCatalogJanitor</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1304">runCatalogJanitor</a>()</pre>
 <div class="block">Ask for a scan of the catalog table.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3656,7 +3658,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>&lt;S,R&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1326">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Funct [...]
+<pre>&lt;S,R&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1325">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Funct [...]
                                               <a href="../../../../../org/apache/hadoop/hbase/client/ServiceCaller.html" title="interface in org.apache.hadoop.hbase.client">ServiceCaller</a>&lt;S,R&gt;&nbsp;callable)</pre>
 <div class="block">Execute the given coprocessor call on the master.
  <p>
@@ -3689,7 +3691,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>&lt;S,R&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1349">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Funct [...]
+<pre>&lt;S,R&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;R&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1348">coprocessorService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Funct [...]
                                               <a href="../../../../../org/apache/hadoop/hbase/client/ServiceCaller.html" title="interface in org.apache.hadoop.hbase.client">ServiceCaller</a>&lt;S,R&gt;&nbsp;callable,
                                               <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block">Execute the given coprocessor call on the given region server.
@@ -3724,7 +3726,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>listDeadServers</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href=". [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href=". [...]
 <div class="block">List all the dead region servers.</div>
 </li>
 </ul>
@@ -3734,7 +3736,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>clearDeadServers</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../.. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../.. [...]
 <div class="block">Clear dead region servers from master.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3750,7 +3752,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>clearBlockCache</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase">CacheEvictionStats</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1375">clearBlockCache</a>(<a href="../../../../../org/apache/hadoop [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase">CacheEvictionStats</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1374">clearBlockCache</a>(<a href="../../../../../org/apache/hadoop [...]
 <div class="block">Clear all the blocks corresponding to this table from BlockCache. For expert-admins. Calling
  this API will drop all the cached blocks specific to a table from BlockCache. This can
  significantly impact the query performance as the subsequent queries will have to retrieve the
@@ -3769,7 +3771,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneTableSchema</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1384">cloneTableSchema</a>(<a href="../../../../../org/apache/hado [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1383">cloneTableSchema</a>(<a href="../../../../../org/apache/hado [...]
                                          <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;newTableName,
                                          boolean&nbsp;preserveSplits)</pre>
 <div class="block">Create a new table by cloning the existent table schema.</div>
@@ -3787,7 +3789,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javas [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javas [...]
                                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;serverNamesList)</pre>
 <div class="block">Turn the compaction on or off. Disabling compactions will also interrupt any currently ongoing
  compactions. This state is ephemeral. The setting will be lost on restart. Compaction
@@ -3808,7 +3810,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>switchRpcThrottle</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1405">switchRpcThrottle</a>(boolean&nbsp;enable)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1404">switchRpcThrottle</a>(boolean&nbsp;enable)</pre>
 <div class="block">Switch the rpc throttle enabled state.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3824,7 +3826,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>isRpcThrottleEnabled</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1411">isRpcThrottleEnabled</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1410">isRpcThrottleEnabled</a>()</pre>
 <div class="block">Get if the rpc throttle is enabled.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3838,7 +3840,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>exceedThrottleQuotaSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1419">exceedThrottleQuotaSwitch</a>(boolean&nbsp;enable)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1418">exceedThrottleQuotaSwitch</a>(boolean&nbsp;enable)</pre>
 <div class="block">Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota
  can be exceeded if region server has availble quota.</div>
 <dl>
@@ -3855,7 +3857,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getSpaceQuotaTableSizes</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/ [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/ [...]
 <div class="block">Fetches the table sizes on the filesystem as tracked by the HBase Master.</div>
 </li>
 </ul>
@@ -3865,7 +3867,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServerSpaceQuotaSnapshots</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;? extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,? extends <a href="../../../.. [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;? extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,? extends <a href="../../../.. [...]
 <div class="block">Fetches the observed <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas"><code>SpaceQuotaSnapshotView</code></a>s observed by a RegionServer.</div>
 </li>
 </ul>
@@ -3875,7 +3877,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentSpaceQuotaSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1437">getCurrentSpaceQuotaSnaps [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1436">getCurrentSpaceQuotaSnaps [...]
 <div class="block">Returns the Master's view of a quota on the given <code>namespace</code> or null if the Master has
  no quota information on that namespace.</div>
 </li>
@@ -3886,7 +3888,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentSpaceQuotaSnapshot</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1443">getCurrentSpaceQuotaSnaps [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotView.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotView</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1442">getCurrentSpaceQuotaSnaps [...]
 <div class="block">Returns the Master's view of a quota on the given <code>tableName</code> or null if the Master has
  no quota information on that table.</div>
 </li>
@@ -3897,7 +3899,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>grant</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1453">grant</a>(org.apache.hadoop.hbase.security.access.UserPermis [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1452">grant</a>(org.apache.hadoop.hbase.security.access.UserPermis [...]
                               boolean&nbsp;mergeExistingPermissions)</pre>
 <div class="block">Grants user specific permissions</div>
 <dl>
@@ -3915,7 +3917,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>revoke</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1459">revoke</a>(org.apache.hadoop.hbase.security.access.UserPermi [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1458">revoke</a>(org.apache.hadoop.hbase.security.access.UserPermi [...]
 <div class="block">Revokes user specific permissions</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3929,7 +3931,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserPermissions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1468 [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1467 [...]
 <div class="block">Get the global/namespace/table permissions for user</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3946,7 +3948,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>hasUserPermissions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&gt;&nbsp; [...]
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&gt;&nbsp; [...]
                                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.Permission&gt;&nbsp;permissions)</pre>
 <div class="block">Check if the user has specific permissions</div>
 <dl>
@@ -3964,7 +3966,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>hasUserPermissions</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>& [...]
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>& [...]
 <div class="block">Check if call user has specific permissions</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3980,7 +3982,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotCleanupSwitch</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1500">snapshotCleanupSwitch</a>(boolean&nbsp;on,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1499">snapshotCleanupSwitch</a>(boolean&nbsp;on,
                                                  boolean&nbsp;sync)</pre>
 <div class="block">Turn on or off the auto snapshot cleanup based on TTL.
  <p/>
@@ -4003,7 +4005,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isSnapshotCleanupEnabled</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1508">isSnapshotCleanupEnabled</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html#line.1507">isSnapshotCleanupEnabled</a>()</pre>
 <div class="block">Query the current state of the auto snapshot cleanup based on TTL.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
diff --git a/apidocs/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html b/apidocs/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html
index da0dc1c..2067eb7 100644
--- a/apidocs/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html
+++ b/apidocs/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html
@@ -393,7 +393,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printUsage</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html#line.1115">printUsage</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html#line.1114">printUsage</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>printUsage</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.util.AbstractHBaseTool</code></dd>
@@ -406,7 +406,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addOptions</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html#line.1128">addOptions</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html#line.1127">addOptions</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code>org.apache.hadoop.hbase.util.AbstractHBaseTool</code></span></div>
 <div class="block">Override this to add command-line options using <code>AbstractHBaseTool.addOptWithArg(java.lang.String, java.lang.String)</code>
  and similar methods.</div>
@@ -422,7 +422,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html#line.1143">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html#line.1142">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 </li>
 </ul>
 </li>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html b/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html
index 123ec60..5522029 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html
@@ -914,1363 +914,1362 @@
 <span class="sourceLineNo">906</span>   * @param forcible &lt;code&gt;true&lt;/code&gt; if do a compulsory merge, otherwise we will only merge two<a name="line.906"></a>
 <span class="sourceLineNo">907</span>   *          adjacent regions<a name="line.907"></a>
 <span class="sourceLineNo">908</span>   * @throws IOException if a remote or network exception occurs<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   */<a name="line.909"></a>
-<span class="sourceLineNo">910</span>  default Future&lt;Void&gt; mergeRegionsAsync(byte[] nameOfRegionA, byte[] nameOfRegionB,<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      boolean forcible) throws IOException {<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    byte[][] nameofRegionsToMerge = new byte[2][];<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    nameofRegionsToMerge[0] = nameOfRegionA;<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    nameofRegionsToMerge[1] = nameOfRegionB;<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    return mergeRegionsAsync(nameofRegionsToMerge, forcible);<a name="line.915"></a>
-<span class="sourceLineNo">916</span>  }<a name="line.916"></a>
-<span class="sourceLineNo">917</span><a name="line.917"></a>
-<span class="sourceLineNo">918</span>  /**<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * Merge regions. Asynchronous operation.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   * &lt;p/&gt;<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * You may get a {@code DoNotRetryIOException} if you pass more than two regions in but the master<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * does not support merging more than two regions. At least till 2.2.0, we still only support<a name="line.922"></a>
-<span class="sourceLineNo">923</span>   * merging two regions.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>   * @param nameofRegionsToMerge encoded or full name of daughter regions<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * @param forcible &lt;code&gt;true&lt;/code&gt; if do a compulsory merge, otherwise we will only merge<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   *          adjacent regions<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @throws IOException if a remote or network exception occurs<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   */<a name="line.928"></a>
-<span class="sourceLineNo">929</span>  Future&lt;Void&gt; mergeRegionsAsync(byte[][] nameofRegionsToMerge, boolean forcible)<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      throws IOException;<a name="line.930"></a>
-<span class="sourceLineNo">931</span><a name="line.931"></a>
-<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
-<span class="sourceLineNo">933</span>   * Split a table. The method will execute split action for each region in table.<a name="line.933"></a>
-<span class="sourceLineNo">934</span>   * @param tableName table to split<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @throws IOException if a remote or network exception occurs<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   */<a name="line.936"></a>
-<span class="sourceLineNo">937</span>  void split(TableName tableName) throws IOException;<a name="line.937"></a>
-<span class="sourceLineNo">938</span><a name="line.938"></a>
-<span class="sourceLineNo">939</span>  /**<a name="line.939"></a>
-<span class="sourceLineNo">940</span>   * Split a table.<a name="line.940"></a>
-<span class="sourceLineNo">941</span>   * @param tableName table to split<a name="line.941"></a>
-<span class="sourceLineNo">942</span>   * @param splitPoint the explicit position to split on<a name="line.942"></a>
-<span class="sourceLineNo">943</span>   * @throws IOException if a remote or network exception occurs<a name="line.943"></a>
-<span class="sourceLineNo">944</span>   */<a name="line.944"></a>
-<span class="sourceLineNo">945</span>  void split(TableName tableName, byte[] splitPoint) throws IOException;<a name="line.945"></a>
-<span class="sourceLineNo">946</span><a name="line.946"></a>
-<span class="sourceLineNo">947</span>  /**<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * Split an individual region. Asynchronous operation.<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @param regionName region to split<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @throws IOException if a remote or network exception occurs<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   */<a name="line.951"></a>
-<span class="sourceLineNo">952</span>  Future&lt;Void&gt; splitRegionAsync(byte[] regionName) throws IOException;<a name="line.952"></a>
-<span class="sourceLineNo">953</span><a name="line.953"></a>
-<span class="sourceLineNo">954</span>  /**<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * Split an individual region. Asynchronous operation.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * @param regionName region to split<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * @param splitPoint the explicit position to split on<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * @throws IOException if a remote or network exception occurs<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>  Future&lt;Void&gt; splitRegionAsync(byte[] regionName, byte[] splitPoint) throws IOException;<a name="line.960"></a>
-<span class="sourceLineNo">961</span><a name="line.961"></a>
-<span class="sourceLineNo">962</span>  /**<a name="line.962"></a>
-<span class="sourceLineNo">963</span>   * Modify an existing table, more IRB friendly version.<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * @param td modified description of the table<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @throws IOException if a remote or network exception occurs<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   */<a name="line.966"></a>
-<span class="sourceLineNo">967</span>  default void modifyTable(TableDescriptor td) throws IOException {<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    get(modifyTableAsync(td), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  }<a name="line.969"></a>
-<span class="sourceLineNo">970</span><a name="line.970"></a>
-<span class="sourceLineNo">971</span>  /**<a name="line.971"></a>
-<span class="sourceLineNo">972</span>   * Modify an existing table, more IRB (ruby) friendly version. Asynchronous operation. This means<a name="line.972"></a>
-<span class="sourceLineNo">973</span>   * that it may be a while before your schema change is updated across all of the table. You can<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @param td description of the table<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @throws IOException if a remote or network exception occurs<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   *         operation to complete<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   */<a name="line.981"></a>
-<span class="sourceLineNo">982</span>  Future&lt;Void&gt; modifyTableAsync(TableDescriptor td) throws IOException;<a name="line.982"></a>
-<span class="sourceLineNo">983</span><a name="line.983"></a>
-<span class="sourceLineNo">984</span>  /**<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * Shuts down the HBase cluster.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * &lt;p/&gt;<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * Notice that, a success shutdown call may ends with an error since the remote server has already<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   * been shutdown.<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   * @throws IOException if a remote or network exception occurs<a name="line.989"></a>
-<span class="sourceLineNo">990</span>   */<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  void shutdown() throws IOException;<a name="line.991"></a>
-<span class="sourceLineNo">992</span><a name="line.992"></a>
-<span class="sourceLineNo">993</span>  /**<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * Shuts down the current HBase master only. Does not shutdown the cluster.<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * &lt;p/&gt;<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * Notice that, a success stopMaster call may ends with an error since the remote server has<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * already been shutdown.<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IOException if a remote or network exception occurs<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * @see #shutdown()<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  void stopMaster() throws IOException;<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  /**<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * Check whether Master is in maintenance mode.<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   *<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @throws IOException if a remote or network exception occurs<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  boolean isMasterInMaintenanceMode()  throws IOException;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span><a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  /**<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>   * Stop the designated regionserver.<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>   *<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>   * @param hostnamePort Hostname and port delimited by a &lt;code&gt;:&lt;/code&gt; as in<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>   * &lt;code&gt;example.org:1234&lt;/code&gt;<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>   * @throws IOException if a remote or network exception occurs<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>   */<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  void stopRegionServer(String hostnamePort) throws IOException;<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * Get whole cluster metrics, containing status about:<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * &lt;pre&gt;<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * hbase version<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   * cluster id<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>   * primary/backup master(s)<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>   * master's coprocessors<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>   * live/dead regionservers<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>   * balancer<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * regions in transition<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   * &lt;/pre&gt;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>   * @return cluster metrics<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>   * @throws IOException if a remote or network exception occurs<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>   */<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>  default ClusterMetrics getClusterMetrics() throws IOException {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    return getClusterMetrics(EnumSet.allOf(ClusterMetrics.Option.class));<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>  }<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span><a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>  /**<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>   * Get cluster status with a set of {@link Option} to get desired status.<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>   * @return cluster status<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>   * @throws IOException if a remote or network exception occurs<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>   */<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>  ClusterMetrics getClusterMetrics(EnumSet&lt;Option&gt; options) throws IOException;<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>  /**<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @return current master server name<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   * @throws IOException if a remote or network exception occurs<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   */<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>  default ServerName getMaster() throws IOException {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    return getClusterMetrics(EnumSet.of(Option.MASTER)).getMasterName();<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>  }<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span><a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  /**<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>   * @return current backup master list<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>   * @throws IOException if a remote or network exception occurs<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>   */<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>  default Collection&lt;ServerName&gt; getBackupMasters() throws IOException {<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>    return getClusterMetrics(EnumSet.of(Option.BACKUP_MASTERS)).getBackupMasterNames();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>  }<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span><a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  /**<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>   * @return current live region servers list<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>   * @throws IOException if a remote or network exception occurs<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>   */<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>  default Collection&lt;ServerName&gt; getRegionServers() throws IOException {<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    return getClusterMetrics(EnumSet.of(Option.SERVERS_NAME)).getServersName();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>  }<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span><a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>  /**<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>   * Get {@link RegionMetrics} of all regions hosted on a regionserver.<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>   *<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>   * @param serverName region server from which {@link RegionMetrics} is required.<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>   * @return a {@link RegionMetrics} list of all regions hosted on a region server<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>   * @throws IOException if a remote or network exception occurs<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>   */<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>  List&lt;RegionMetrics&gt; getRegionMetrics(ServerName serverName) throws IOException;<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>  /**<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>   * Get {@link RegionMetrics} of all regions hosted on a regionserver for a table.<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>   *<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>   * @param serverName region server from which {@link RegionMetrics} is required.<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>   * @param tableName get {@link RegionMetrics} of regions belonging to the table<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>   * @return region metrics map of all regions of a table hosted on a region server<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>   * @throws IOException if a remote or network exception occurs<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>   */<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>  List&lt;RegionMetrics&gt; getRegionMetrics(ServerName serverName,<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    TableName tableName) throws IOException;<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>  /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>   * @return Configuration used by the instance.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>   */<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  Configuration getConfiguration();<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span><a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>  /**<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>   * Create a new namespace. Blocks until namespace has been successfully created or an exception is<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   * thrown.<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>   * @param descriptor descriptor which describes the new namespace.<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>   * @throws IOException if a remote or network exception occurs<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>   */<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>  default void createNamespace(NamespaceDescriptor descriptor) throws IOException {<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>    get(createNamespaceAsync(descriptor), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>  }<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span><a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>  /**<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>   * Create a new namespace.<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>   * @param descriptor descriptor which describes the new namespace<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>   * @return the result of the async create namespace operation. Use Future.get(long, TimeUnit) to<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>   *         wait on the operation to complete.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>   * @throws IOException if a remote or network exception occurs<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>   */<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>  Future&lt;Void&gt; createNamespaceAsync(NamespaceDescriptor descriptor) throws IOException;<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span><a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  /**<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * Modify an existing namespace. Blocks until namespace has been successfully modified or an<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * exception is thrown.<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   * @param descriptor descriptor which describes the new namespace<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>   * @throws IOException if a remote or network exception occurs<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>   */<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  default void modifyNamespace(NamespaceDescriptor descriptor) throws IOException {<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>    get(modifyNamespaceAsync(descriptor), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  /**<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   * Modify an existing namespace.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>   * @param descriptor descriptor which describes the new namespace<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   * @return the result of the async modify namespace operation. Use Future.get(long, TimeUnit) to<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   *         wait on the operation to complete.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @throws IOException if a remote or network exception occurs<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   */<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>  Future&lt;Void&gt; modifyNamespaceAsync(NamespaceDescriptor descriptor) throws IOException;<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span><a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  /**<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>   * Delete an existing namespace. Only empty namespaces (no tables) can be removed. Blocks until<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>   * namespace has been successfully deleted or an exception is thrown.<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>   * @param name namespace name<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>   * @throws IOException if a remote or network exception occurs<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>   */<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>  default void deleteNamespace(String name) throws IOException {<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>    get(deleteNamespaceAsync(name), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  }<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span><a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>  /**<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * Delete an existing namespace. Only empty namespaces (no tables) can be removed.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * @param name namespace name<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @return the result of the async delete namespace operation. Use Future.get(long, TimeUnit) to<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   *         wait on the operation to complete.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   * @throws IOException if a remote or network exception occurs<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   */<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>  Future&lt;Void&gt; deleteNamespaceAsync(String name) throws IOException;<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span><a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  /**<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>   * Get a namespace descriptor by name.<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>   * @param name name of namespace descriptor<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>   * @return A descriptor<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>   * @throws org.apache.hadoop.hbase.NamespaceNotFoundException<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>   * @throws IOException if a remote or network exception occurs<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>   */<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>  NamespaceDescriptor getNamespaceDescriptor(String name)<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      throws NamespaceNotFoundException, IOException;<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span><a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  /**<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>   * List available namespaces<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>   *<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * @return List of namespace names<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @throws IOException if a remote or network exception occurs<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   */<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>  String[] listNamespaces() throws IOException;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span><a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>  /**<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>   * List available namespace descriptors<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>   *<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>   * @return List of descriptors<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>   * @throws IOException if a remote or network exception occurs<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>   */<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>  NamespaceDescriptor[] listNamespaceDescriptors() throws IOException;<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span><a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  /**<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>   * Get list of table descriptors by namespace.<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>   * @param name namespace name<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>   * @return returns a list of TableDescriptors<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * @throws IOException if a remote or network exception occurs<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   */<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>  List&lt;TableDescriptor&gt; listTableDescriptorsByNamespace(byte[] name) throws IOException;<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span><a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>  /**<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>   * Get list of table names by namespace.<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>   * @param name namespace name<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>   * @return The list of table names in the namespace<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>   * @throws IOException if a remote or network exception occurs<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>   */<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>  TableName[] listTableNamesByNamespace(String name) throws IOException;<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span><a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>  /**<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>   * Get the regions of a given table.<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>   *<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>   * @param tableName the name of the table<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>   * @return List of {@link RegionInfo}.<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>   * @throws IOException if a remote or network exception occurs<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>   */<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>  List&lt;RegionInfo&gt; getRegions(TableName tableName) throws IOException;<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span><a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>  @Override<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>  void close();<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span><a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>  /**<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>   * Get tableDescriptors.<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>   *<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>   * @param tableNames List of table names<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>   * @return returns a list of TableDescriptors<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>   * @throws IOException if a remote or network exception occurs<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>   */<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>  List&lt;TableDescriptor&gt; listTableDescriptors(List&lt;TableName&gt; tableNames)<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>    throws IOException;<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span><a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>  /**<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>   * Abort a procedure.<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>   * &lt;p/&gt;<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>   * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>   * @param procId ID of the procedure to abort<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>   * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>   * @return &lt;code&gt;true&lt;/code&gt; if aborted, &lt;code&gt;false&lt;/code&gt; if procedure already completed or does<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>   *         not exist<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   * @throws IOException if a remote or network exception occurs<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>   * @deprecated since 2.1.1 and will be removed in 4.0.0.<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21223"&gt;HBASE-21223&lt;/a&gt;<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>   */<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>  @Deprecated<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>  default boolean abortProcedure(long procId, boolean mayInterruptIfRunning) throws IOException {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>    return get(abortProcedureAsync(procId, mayInterruptIfRunning), getSyncWaitTimeout(),<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      TimeUnit.MILLISECONDS);<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>  }<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span><a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>  /**<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>   * Abort a procedure but does not block and wait for completion.<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete.<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>   * It may throw ExecutionException if there was an error while executing the operation<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>   * or TimeoutException in case the wait timeout was not long enough to allow the<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>   * operation to complete.<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>   * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>   *<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   * @param procId ID of the procedure to abort<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>   * @return &lt;code&gt;true&lt;/code&gt; if aborted, &lt;code&gt;false&lt;/code&gt; if procedure already completed or does not exist<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>   * @throws IOException if a remote or network exception occurs<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>   * @deprecated since 2.1.1 and will be removed in 4.0.0.<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21223"&gt;HBASE-21223&lt;/a&gt;<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>   */<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>  @Deprecated<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>  Future&lt;Boolean&gt; abortProcedureAsync(long procId, boolean mayInterruptIfRunning)<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      throws IOException;<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span><a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>  /**<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>   * Get procedures.<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>   * @return procedure list in JSON<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>   * @throws IOException if a remote or network exception occurs<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>   */<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>  String getProcedures() throws IOException;<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  /**<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>   * Get locks.<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>   * @return lock list in JSON<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>   * @throws IOException if a remote or network exception occurs<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>   */<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  String getLocks() throws IOException;<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   *<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * Note that the actual rolling of the log writer is asynchronous and may not be complete when<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   * this method returns. As a side effect of this call, the named region server may schedule<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>   * store flushes at the request of the wal.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   *<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>   * @param serverName The servername of the regionserver.<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   * @throws IOException if a remote or network exception occurs<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>   * @throws org.apache.hadoop.hbase.regionserver.wal.FailedLogCloseException<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>   */<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>  void rollWALWriter(ServerName serverName) throws IOException, FailedLogCloseException;<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span><a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  /**<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>   * Helper that delegates to getClusterMetrics().getMasterCoprocessorNames().<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>   * @return an array of master coprocessors<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>   * @see org.apache.hadoop.hbase.ClusterMetrics#getMasterCoprocessorNames()<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>   */<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>  default List&lt;String&gt; getMasterCoprocessorNames() throws IOException {<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_COPROCESSORS))<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>      .getMasterCoprocessorNames();<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>  }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span><a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>  /**<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>   * Get the current compaction state of a table. It could be in a major compaction, a minor<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>   * compaction, both, or none.<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>   *<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>   * @param tableName table to examine<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>   * @return the current compaction state<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * @throws IOException if a remote or network exception occurs<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   */<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>  CompactionState getCompactionState(TableName tableName) throws IOException;<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span><a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>  /**<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * Get the current compaction state of a table. It could be in a compaction, or none.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   *<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * @param tableName table to examine<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   * @return the current compaction state<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   * @throws IOException if a remote or network exception occurs<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>   */<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>  CompactionState getCompactionState(TableName tableName,<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    CompactType compactType) throws IOException;<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span><a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>  /**<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>   * Get the current compaction state of region. It could be in a major compaction, a minor<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>   * compaction, both, or none.<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>   *<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>   * @param regionName region to examine<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>   * @return the current compaction state<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * @throws IOException if a remote or network exception occurs<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   */<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>  CompactionState getCompactionStateForRegion(byte[] regionName) throws IOException;<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span><a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  /**<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>   * Get the timestamp of the last major compaction for the passed table<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>   *<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>   * The timestamp of the oldest HFile resulting from a major compaction of that table,<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>   * or 0 if no such HFile could be found.<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>   *<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   * @param tableName table to examine<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>   * @return the last major compaction timestamp or 0<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>   * @throws IOException if a remote or network exception occurs<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>   */<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  long getLastMajorCompactionTimestamp(TableName tableName) throws IOException;<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span><a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>  /**<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>   * Get the timestamp of the last major compaction for the passed region.<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>   *<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>   * The timestamp of the oldest HFile resulting from a major compaction of that region,<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>   * or 0 if no such HFile could be found.<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>   *<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>   * @param regionName region to examine<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>   * @return the last major compaction timestamp or 0<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>   * @throws IOException if a remote or network exception occurs<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>   */<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException;<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span><a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>  /**<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>   * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>   * taken. If the table is disabled, an offline snapshot is taken. Snapshots are taken<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>   * sequentially even when requested concurrently, across all tables. Snapshots are considered<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>   * unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Attempts to take a snapshot with the same<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>   * name (even a different type or with different parameters) will fail with a<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>   * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>   * naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   * @param snapshotName name of the snapshot to be created<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>   * @param tableName name of the table for which snapshot is created<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   * @throws IOException if a remote or network exception occurs<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>   * @throws org.apache.hadoop.hbase.snapshot.SnapshotCreationException if snapshot creation failed<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>   */<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>  default void snapshot(String snapshotName, TableName tableName)<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>      throws IOException, SnapshotCreationException, IllegalArgumentException {<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>    snapshot(snapshotName, tableName, SnapshotType.FLUSH);<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>  }<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span><a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  /**<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>   * all tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>   * different parameters) will fail with a {@link SnapshotCreationException} indicating the<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * duplicate naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>   *          snapshots stored on the cluster<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>   * @param tableName name of the table to snapshot<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>   * @param type type of snapshot to take<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>   * @throws IOException we fail to reach the master<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>   */<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>  default void snapshot(String snapshotName, TableName tableName, SnapshotType type)<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>      throws IOException, SnapshotCreationException, IllegalArgumentException {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    snapshot(new SnapshotDescription(snapshotName, tableName, type));<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>   * all tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>   * different parameters) will fail with a {@link SnapshotCreationException} indicating the<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * duplicate naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>   * Snapshot can live with ttl seconds.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>   *<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>   * @param snapshotName  name to give the snapshot on the filesystem. Must be unique from all other<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>   *                      snapshots stored on the cluster<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>   * @param tableName     name of the table to snapshot<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>   * @param type          type of snapshot to take<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   * @param snapshotProps snapshot additional properties e.g. TTL<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>   * @throws IOException               we fail to reach the master<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>   * @throws IllegalArgumentException  if the snapshot request is formatted incorrectly<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>   */<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>  default void snapshot(String snapshotName, TableName tableName, SnapshotType type,<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>                        Map&lt;String, Object&gt; snapshotProps) throws IOException,<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>      SnapshotCreationException, IllegalArgumentException {<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>    snapshot(new SnapshotDescription(snapshotName, tableName, type, snapshotProps));<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>  }<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span><a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>  /**<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>   * all tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>   * different parameters) will fail with a {@link SnapshotCreationException} indicating the<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>   * duplicate naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * Snapshot can live with ttl seconds.<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   *<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @param snapshotName  name to give the snapshot on the filesystem. Must be unique from all other<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   *                      snapshots stored on the cluster<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>   * @param tableName     name of the table to snapshot<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>   * @param snapshotProps snapshot additional properties e.g. TTL<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>   * @throws IOException               we fail to reach the master<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>   * @throws IllegalArgumentException  if the snapshot request is formatted incorrectly<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>  default void snapshot(String snapshotName, TableName tableName,<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>                        Map&lt;String, Object&gt; snapshotProps) throws IOException,<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>      SnapshotCreationException, IllegalArgumentException {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>    snapshot(new SnapshotDescription(snapshotName, tableName, SnapshotType.FLUSH, snapshotProps));<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>  }<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span><a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>  /**<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>   * Take a snapshot and wait for the server to complete that snapshot (blocking). Snapshots are<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>   * considered unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Snapshots are taken sequentially<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>   * even when requested concurrently, across all tables. Attempts to take a snapshot with the same<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>   * name (even a different type or with different parameters) will fail with a<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>   * {@link SnapshotCreationException} indicating the duplicate naming. Snapshot names follow the<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>   * same naming constraints as tables in HBase. See<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}. You should<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>   * probably use {@link #snapshot(String, org.apache.hadoop.hbase.TableName)} unless you are sure<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>   * about the type of snapshot that you want to take.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>   * @param snapshot snapshot to take<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>   * @throws IOException or we lose contact with the master.<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   * @throws SnapshotCreationException if snapshot failed to be taken<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>   */<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>  void snapshot(SnapshotDescription snapshot)<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>      throws IOException, SnapshotCreationException, IllegalArgumentException;<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span><a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  /**<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>   * Take a snapshot without waiting for the server to complete that snapshot (asynchronous).<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>   * Snapshots are considered unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Snapshots are taken<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>   * sequentially even when requested concurrently, across all tables.<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>   *<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>   * @param snapshot snapshot to take<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>   * @throws IOException if the snapshot did not succeed or we lose contact with the master.<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   */<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>  Future&lt;Void&gt; snapshotAsync(SnapshotDescription snapshot)<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      throws IOException, SnapshotCreationException;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span><a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>  /**<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>   * Check the current state of the passed snapshot. There are three possible states: &lt;ol&gt;<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt; &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>   * &lt;li&gt;finished with error - throws the exception that caused the snapshot to fail&lt;/li&gt; &lt;/ol&gt; The<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * cluster only knows about the most recent snapshot. Therefore, if another snapshot has been<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   * run/started since the snapshot you are checking, you will receive an {@link<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>   * org.apache.hadoop.hbase.snapshot.UnknownSnapshotException}.<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>   *<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>   * @param snapshot description of the snapshot to check<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the snapshot is completed, &lt;tt&gt;false&lt;/tt&gt; if the snapshot is still<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   * running<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>   * @throws IOException if we have a network issue<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>   * @throws org.apache.hadoop.hbase.snapshot.HBaseSnapshotException if the snapshot failed<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>   * @throws org.apache.hadoop.hbase.snapshot.UnknownSnapshotException if the requested snapshot is<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>   * unknown<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>   */<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>  boolean isSnapshotFinished(SnapshotDescription snapshot)<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      throws IOException, HBaseSnapshotException, UnknownSnapshotException;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span><a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>  /**<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If the<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   * &lt;code&gt;true&lt;/code&gt;, a snapshot of the current table is taken before executing the restore<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>   * operation. In case of restore failure, the failsafe snapshot will be restored. If the restore<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>   * completes without problem the failsafe snapshot is deleted.<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>   * @param snapshotName name of the snapshot to restore<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>   * @throws IOException if a remote or network exception occurs<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>   * @throws RestoreSnapshotException if snapshot failed to be restored<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>   * @throws IllegalArgumentException if the restore request is formatted incorrectly<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>   */<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>  void restoreSnapshot(String snapshotName) throws IOException, RestoreSnapshotException;<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span><a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>  /**<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>   * 'takeFailSafeSnapshot' is set to &lt;code&gt;true&lt;/code&gt;, a snapshot of the current table is taken<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>   * before executing the restore operation. In case of restore failure, the failsafe snapshot will<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>   * be restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>   * failsafe snapshot name is configurable by using the property<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>   * @param snapshotName name of the snapshot to restore<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>   * @param takeFailSafeSnapshot &lt;code&gt;true&lt;/code&gt; if the failsafe snapshot should be taken<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>   * @throws IOException if a remote or network exception occurs<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>   * @throws RestoreSnapshotException if snapshot failed to be restored<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>   * @throws IllegalArgumentException if the restore request is formatted incorrectly<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   */<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>  default void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot)<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>      throws IOException, RestoreSnapshotException {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>    restoreSnapshot(snapshotName, takeFailSafeSnapshot, false);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>  }<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span><a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>  /**<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>   * 'takeFailSafeSnapshot' is set to &lt;code&gt;true&lt;/code&gt;, a snapshot of the current table is taken<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>   * before executing the restore operation. In case of restore failure, the failsafe snapshot will<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>   * be restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>   * failsafe snapshot name is configurable by using the property<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>   * @param snapshotName name of the snapshot to restore<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * @param takeFailSafeSnapshot &lt;code&gt;true&lt;/code&gt; if the failsafe snapshot should be taken<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to restore acl of snapshot<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * @throws IOException if a remote or network exception occurs<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * @throws RestoreSnapshotException if snapshot failed to be restored<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * @throws IllegalArgumentException if the restore request is formatted incorrectly<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   */<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>  void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot, boolean restoreAcl)<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>      throws IOException, RestoreSnapshotException;<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span><a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>  /**<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>   * Create a new table by cloning the snapshot content.<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>   * @throws IOException if a remote or network exception occurs<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>   * @throws TableExistsException if table to be created already exists<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>   * @throws RestoreSnapshotException if snapshot failed to be cloned<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>   * @throws IllegalArgumentException if the specified table has not a valid name<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>   */<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>  default void cloneSnapshot(String snapshotName, TableName tableName)<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>      throws IOException, TableExistsException, RestoreSnapshotException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>    cloneSnapshot(snapshotName, tableName, false);<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>  }<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span><a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>  /**<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>   * Create a new table by cloning the snapshot content.<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to clone acl into newly created table<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>   * @throws IOException if a remote or network exception occurs<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>   * @throws TableExistsException if table to be created already exists<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>   * @throws RestoreSnapshotException if snapshot failed to be cloned<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>   * @throws IllegalArgumentException if the specified table has not a valid name<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>   */<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>  default void cloneSnapshot(String snapshotName, TableName tableName, boolean restoreAcl)<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      throws IOException, TableExistsException, RestoreSnapshotException {<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    get(cloneSnapshotAsync(snapshotName, tableName, restoreAcl), getSyncWaitTimeout(),<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      TimeUnit.MILLISECONDS);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>  }<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span><a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>  /**<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   * Create a new table by cloning the snapshot content, but does not block and wait for it to be<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>   * completely cloned. You can use Future.get(long, TimeUnit) to wait on the operation to complete.<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>   * It may throw ExecutionException if there was an error while executing the operation or<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>   * TimeoutException in case the wait timeout was not long enough to allow the operation to<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * complete.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>   * @throws IOException if a remote or network exception occurs<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>   * @throws TableExistsException if table to be cloned already exists<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>   * @return the result of the async clone snapshot. You can use Future.get(long, TimeUnit) to wait<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>   *         on the operation to complete.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>   */<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>  default Future&lt;Void&gt; cloneSnapshotAsync(String snapshotName, TableName tableName)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      throws IOException, TableExistsException {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    return cloneSnapshotAsync(snapshotName, tableName, false);<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>  }<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span><a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  /**<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>   * Create a new table by cloning the snapshot content.<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to clone acl into newly created table<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   * @throws IOException if a remote or network exception occurs<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>   * @throws TableExistsException if table to be created already exists<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>   * @throws RestoreSnapshotException if snapshot failed to be cloned<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>   * @throws IllegalArgumentException if the specified table has not a valid name<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>   */<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>  Future&lt;Void&gt; cloneSnapshotAsync(String snapshotName, TableName tableName, boolean restoreAcl)<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>      throws IOException, TableExistsException, RestoreSnapshotException;<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>  /**<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>   * Execute a distributed procedure on a cluster.<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>   *<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>   * root ZK node name of the procedure).<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   * optional.<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * @throws IOException if a remote or network exception occurs<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   */<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>  void execProcedure(String signature, String instance, Map&lt;String, String&gt; props)<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      throws IOException;<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span><a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>  /**<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>   * Execute a distributed procedure on a cluster.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>   *<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>   * root ZK node name of the procedure).<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>   * optional.<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>   * @return data returned after procedure execution. null if no return data.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>   * @throws IOException if a remote or network exception occurs<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>   */<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>  byte[] execProcedureWithReturn(String signature, String instance, Map&lt;String, String&gt; props)<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      throws IOException;<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  /**<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>   * Check the current state of the specified procedure. There are three possible states: &lt;ol&gt;<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt; &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>   * &lt;li&gt;finished with error - throws the exception that caused the procedure to fail&lt;/li&gt; &lt;/ol&gt;<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>   *<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>   * @param signature The signature that uniquely identifies a procedure<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>   * @param instance The instance name of the procedure<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>   * @return &lt;code&gt;true&lt;/code&gt; if the specified procedure is finished successfully, &lt;code&gt;false&lt;/code&gt; if it is still running<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>   * @throws IOException if the specified procedure finished with error<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>   */<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>  boolean isProcedureFinished(String signature, String instance, Map&lt;String, String&gt; props)<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      throws IOException;<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span><a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>  /**<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>   * List completed snapshots.<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>   *<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>   * @return a list of snapshot descriptors for completed snapshots<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>   * @throws IOException if a network error occurs<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>   */<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  List&lt;SnapshotDescription&gt; listSnapshots() throws IOException;<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span><a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>  /**<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>   * List all the completed snapshots matching the given pattern.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>   *<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>   * @param pattern The compiled regular expression to match against<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>   * @return list of SnapshotDescription<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>   * @throws IOException if a remote or network exception occurs<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>   */<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>  List&lt;SnapshotDescription&gt; listSnapshots(Pattern pattern) throws IOException;<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span><a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>  /**<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>   * List all the completed snapshots matching the given table name regular expression and snapshot<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>   * name regular expression.<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>   * @return list of completed SnapshotDescription<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>   * @throws IOException if a remote or network exception occurs<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>   */<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>  List&lt;SnapshotDescription&gt; listTableSnapshots(Pattern tableNamePattern,<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>      Pattern snapshotNamePattern) throws IOException;<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span><a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>  /**<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>   * Delete an existing snapshot.<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>   *<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>   * @param snapshotName name of the snapshot<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>   * @throws IOException if a remote or network exception occurs<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>   */<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>  void deleteSnapshot(String snapshotName) throws IOException;<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span><a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>  /**<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>   * Delete existing snapshots whose names match the pattern passed.<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>   *<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>   * @param pattern pattern for names of the snapshot to match<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>   * @throws IOException if a remote or network exception occurs<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>   */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>  void deleteSnapshots(Pattern pattern) throws IOException;<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span><a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>  /**<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>   * Delete all existing snapshots matching the given table name regular expression and snapshot<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>   * name regular expression.<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>   * @throws IOException if a remote or network exception occurs<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>   */<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>  void deleteTableSnapshots(Pattern tableNamePattern, Pattern snapshotNamePattern)<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>      throws IOException;<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span><a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>  /**<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>   * Apply the new quota settings.<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>   *<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>   * @param quota the quota settings<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>   * @throws IOException if a remote or network exception occurs<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>   */<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>  void setQuota(QuotaSettings quota) throws IOException;<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>  /**<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>   * List the quotas based on the filter.<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>   * @param filter the quota settings filter<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>   * @return the QuotaSetting list<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>   * @throws IOException if a remote or network exception occurs<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>   */<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>  List&lt;QuotaSettings&gt; getQuota(QuotaFilter filter) throws IOException;<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>  /**<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>   * Creates and returns a {@link com.google.protobuf.RpcChannel} instance connected to the active<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>   * master. &lt;p&gt; The obtained {@link com.google.protobuf.RpcChannel} instance can be used to access<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>   * a published coprocessor {@link com.google.protobuf.Service} using standard protobuf service<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>   * invocations: &lt;/p&gt; &lt;div style="background-color: #cccccc; padding: 2px"&gt;<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>   * &lt;blockquote&gt;&lt;pre&gt;<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>   * CoprocessorRpcChannel channel = myAdmin.coprocessorService();<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>   * MyService.BlockingInterface service = MyService.newBlockingStub(channel);<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>   * MyCallRequest request = MyCallRequest.newBuilder()<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>   *     ...<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>   *     .build();<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>   * MyCallResponse response = service.myCall(null, request);<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>   * &lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>   *<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>   * @return A MasterCoprocessorRpcChannel instance<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>   * @deprecated since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>   *             more. Use the coprocessorService methods in {@link AsyncAdmin} instead.<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>   */<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>  @Deprecated<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>  CoprocessorRpcChannel coprocessorService();<a name="line.1719"></a>
+<span class="sourceLineNo">909</span>   * @deprecated since 2.3.0 and will be removed in 4.0.0. Multi-region merge feature is now<a name="line.909"></a>
+<span class="sourceLineNo">910</span>   *             supported. Use {@link #mergeRegionsAsync(byte[][], boolean)} instead.<a name="line.910"></a>
+<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
+<span class="sourceLineNo">912</span>  @Deprecated<a name="line.912"></a>
+<span class="sourceLineNo">913</span>  default Future&lt;Void&gt; mergeRegionsAsync(byte[] nameOfRegionA, byte[] nameOfRegionB,<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      boolean forcible) throws IOException {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>    byte[][] nameofRegionsToMerge = new byte[2][];<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    nameofRegionsToMerge[0] = nameOfRegionA;<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    nameofRegionsToMerge[1] = nameOfRegionB;<a name="line.917"></a>
+<span class="sourceLineNo">918</span>    return mergeRegionsAsync(nameofRegionsToMerge, forcible);<a name="line.918"></a>
+<span class="sourceLineNo">919</span>  }<a name="line.919"></a>
+<span class="sourceLineNo">920</span><a name="line.920"></a>
+<span class="sourceLineNo">921</span>  /**<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   * Merge multiple regions (&gt;=2). Asynchronous operation.<a name="line.922"></a>
+<span class="sourceLineNo">923</span>   * @param nameofRegionsToMerge encoded or full name of daughter regions<a name="line.923"></a>
+<span class="sourceLineNo">924</span>   * @param forcible &lt;code&gt;true&lt;/code&gt; if do a compulsory merge, otherwise we will only merge<a name="line.924"></a>
+<span class="sourceLineNo">925</span>   *          adjacent regions<a name="line.925"></a>
+<span class="sourceLineNo">926</span>   * @throws IOException if a remote or network exception occurs<a name="line.926"></a>
+<span class="sourceLineNo">927</span>   */<a name="line.927"></a>
+<span class="sourceLineNo">928</span>  Future&lt;Void&gt; mergeRegionsAsync(byte[][] nameofRegionsToMerge, boolean forcible)<a name="line.928"></a>
+<span class="sourceLineNo">929</span>      throws IOException;<a name="line.929"></a>
+<span class="sourceLineNo">930</span><a name="line.930"></a>
+<span class="sourceLineNo">931</span>  /**<a name="line.931"></a>
+<span class="sourceLineNo">932</span>   * Split a table. The method will execute split action for each region in table.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * @param tableName table to split<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * @throws IOException if a remote or network exception occurs<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   */<a name="line.935"></a>
+<span class="sourceLineNo">936</span>  void split(TableName tableName) throws IOException;<a name="line.936"></a>
+<span class="sourceLineNo">937</span><a name="line.937"></a>
+<span class="sourceLineNo">938</span>  /**<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   * Split a table.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * @param tableName table to split<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * @param splitPoint the explicit position to split on<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * @throws IOException if a remote or network exception occurs<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   */<a name="line.943"></a>
+<span class="sourceLineNo">944</span>  void split(TableName tableName, byte[] splitPoint) throws IOException;<a name="line.944"></a>
+<span class="sourceLineNo">945</span><a name="line.945"></a>
+<span class="sourceLineNo">946</span>  /**<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   * Split an individual region. Asynchronous operation.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>   * @param regionName region to split<a name="line.948"></a>
+<span class="sourceLineNo">949</span>   * @throws IOException if a remote or network exception occurs<a name="line.949"></a>
+<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
+<span class="sourceLineNo">951</span>  Future&lt;Void&gt; splitRegionAsync(byte[] regionName) throws IOException;<a name="line.951"></a>
+<span class="sourceLineNo">952</span><a name="line.952"></a>
+<span class="sourceLineNo">953</span>  /**<a name="line.953"></a>
+<span class="sourceLineNo">954</span>   * Split an individual region. Asynchronous operation.<a name="line.954"></a>
+<span class="sourceLineNo">955</span>   * @param regionName region to split<a name="line.955"></a>
+<span class="sourceLineNo">956</span>   * @param splitPoint the explicit position to split on<a name="line.956"></a>
+<span class="sourceLineNo">957</span>   * @throws IOException if a remote or network exception occurs<a name="line.957"></a>
+<span class="sourceLineNo">958</span>   */<a name="line.958"></a>
+<span class="sourceLineNo">959</span>  Future&lt;Void&gt; splitRegionAsync(byte[] regionName, byte[] splitPoint) throws IOException;<a name="line.959"></a>
+<span class="sourceLineNo">960</span><a name="line.960"></a>
+<span class="sourceLineNo">961</span>  /**<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * Modify an existing table, more IRB friendly version.<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param td modified description of the table<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @throws IOException if a remote or network exception occurs<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   */<a name="line.965"></a>
+<span class="sourceLineNo">966</span>  default void modifyTable(TableDescriptor td) throws IOException {<a name="line.966"></a>
+<span class="sourceLineNo">967</span>    get(modifyTableAsync(td), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.967"></a>
+<span class="sourceLineNo">968</span>  }<a name="line.968"></a>
+<span class="sourceLineNo">969</span><a name="line.969"></a>
+<span class="sourceLineNo">970</span>  /**<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * Modify an existing table, more IRB (ruby) friendly version. Asynchronous operation. This means<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * that it may be a while before your schema change is updated across all of the table. You can<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   * use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.973"></a>
+<span class="sourceLineNo">974</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.974"></a>
+<span class="sourceLineNo">975</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.975"></a>
+<span class="sourceLineNo">976</span>   * @param td description of the table<a name="line.976"></a>
+<span class="sourceLineNo">977</span>   * @throws IOException if a remote or network exception occurs<a name="line.977"></a>
+<span class="sourceLineNo">978</span>   * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the<a name="line.978"></a>
+<span class="sourceLineNo">979</span>   *         operation to complete<a name="line.979"></a>
+<span class="sourceLineNo">980</span>   */<a name="line.980"></a>
+<span class="sourceLineNo">981</span>  Future&lt;Void&gt; modifyTableAsync(TableDescriptor td) throws IOException;<a name="line.981"></a>
+<span class="sourceLineNo">982</span><a name="line.982"></a>
+<span class="sourceLineNo">983</span>  /**<a name="line.983"></a>
+<span class="sourceLineNo">984</span>   * Shuts down the HBase cluster.<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   * &lt;p/&gt;<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * Notice that, a success shutdown call may ends with an error since the remote server has already<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   * been shutdown.<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   * @throws IOException if a remote or network exception occurs<a name="line.988"></a>
+<span class="sourceLineNo">989</span>   */<a name="line.989"></a>
+<span class="sourceLineNo">990</span>  void shutdown() throws IOException;<a name="line.990"></a>
+<span class="sourceLineNo">991</span><a name="line.991"></a>
+<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   * Shuts down the current HBase master only. Does not shutdown the cluster.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>   * &lt;p/&gt;<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   * Notice that, a success stopMaster call may ends with an error since the remote server has<a name="line.995"></a>
+<span class="sourceLineNo">996</span>   * already been shutdown.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * @throws IOException if a remote or network exception occurs<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * @see #shutdown()<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   */<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>  void stopMaster() throws IOException;<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span><a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  /**<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   * Check whether Master is in maintenance mode.<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>   *<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>   * @throws IOException if a remote or network exception occurs<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   */<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  boolean isMasterInMaintenanceMode()  throws IOException;<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>  /**<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>   * Stop the designated regionserver.<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>   *<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>   * @param hostnamePort Hostname and port delimited by a &lt;code&gt;:&lt;/code&gt; as in<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>   * &lt;code&gt;example.org:1234&lt;/code&gt;<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>   * @throws IOException if a remote or network exception occurs<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>   */<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  void stopRegionServer(String hostnamePort) throws IOException;<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  /**<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>   * Get whole cluster metrics, containing status about:<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>   * &lt;pre&gt;<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>   * hbase version<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * cluster id<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * primary/backup master(s)<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   * master's coprocessors<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>   * live/dead regionservers<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>   * balancer<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>   * regions in transition<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>   * &lt;/pre&gt;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>   * @return cluster metrics<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>   * @throws IOException if a remote or network exception occurs<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   */<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>  default ClusterMetrics getClusterMetrics() throws IOException {<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>    return getClusterMetrics(EnumSet.allOf(ClusterMetrics.Option.class));<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  }<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span><a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  /**<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>   * Get cluster status with a set of {@link Option} to get desired status.<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>   * @return cluster status<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * @throws IOException if a remote or network exception occurs<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   */<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>  ClusterMetrics getClusterMetrics(EnumSet&lt;Option&gt; options) throws IOException;<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span><a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>  /**<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>   * @return current master server name<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>   * @throws IOException if a remote or network exception occurs<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>   */<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>  default ServerName getMaster() throws IOException {<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    return getClusterMetrics(EnumSet.of(Option.MASTER)).getMasterName();<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>  }<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span><a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>  /**<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>   * @return current backup master list<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>   * @throws IOException if a remote or network exception occurs<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>   */<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>  default Collection&lt;ServerName&gt; getBackupMasters() throws IOException {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    return getClusterMetrics(EnumSet.of(Option.BACKUP_MASTERS)).getBackupMasterNames();<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>  }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>  /**<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>   * @return current live region servers list<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>   * @throws IOException if a remote or network exception occurs<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>   */<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>  default Collection&lt;ServerName&gt; getRegionServers() throws IOException {<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>    return getClusterMetrics(EnumSet.of(Option.SERVERS_NAME)).getServersName();<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>  }<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span><a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>  /**<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>   * Get {@link RegionMetrics} of all regions hosted on a regionserver.<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>   *<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>   * @param serverName region server from which {@link RegionMetrics} is required.<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>   * @return a {@link RegionMetrics} list of all regions hosted on a region server<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>   * @throws IOException if a remote or network exception occurs<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>   */<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  List&lt;RegionMetrics&gt; getRegionMetrics(ServerName serverName) throws IOException;<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span><a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>  /**<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * Get {@link RegionMetrics} of all regions hosted on a regionserver for a table.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   *<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>   * @param serverName region server from which {@link RegionMetrics} is required.<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>   * @param tableName get {@link RegionMetrics} of regions belonging to the table<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>   * @return region metrics map of all regions of a table hosted on a region server<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>   * @throws IOException if a remote or network exception occurs<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>   */<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>  List&lt;RegionMetrics&gt; getRegionMetrics(ServerName serverName,<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>    TableName tableName) throws IOException;<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span><a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>  /**<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>   * @return Configuration used by the instance.<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>   */<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>  Configuration getConfiguration();<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span><a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>  /**<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>   * Create a new namespace. Blocks until namespace has been successfully created or an exception is<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>   * thrown.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>   * @param descriptor descriptor which describes the new namespace.<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>   * @throws IOException if a remote or network exception occurs<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>   */<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>  default void createNamespace(NamespaceDescriptor descriptor) throws IOException {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>    get(createNamespaceAsync(descriptor), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>  }<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span><a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>  /**<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>   * Create a new namespace.<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>   * @param descriptor descriptor which describes the new namespace<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>   * @return the result of the async create namespace operation. Use Future.get(long, TimeUnit) to<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>   *         wait on the operation to complete.<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>   * @throws IOException if a remote or network exception occurs<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>   */<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>  Future&lt;Void&gt; createNamespaceAsync(NamespaceDescriptor descriptor) throws IOException;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span><a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>  /**<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   * Modify an existing namespace. Blocks until namespace has been successfully modified or an<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>   * exception is thrown.<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>   * @param descriptor descriptor which describes the new namespace<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>   * @throws IOException if a remote or network exception occurs<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>   */<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>  default void modifyNamespace(NamespaceDescriptor descriptor) throws IOException {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>    get(modifyNamespaceAsync(descriptor), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>  }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span><a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>  /**<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>   * Modify an existing namespace.<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>   * @param descriptor descriptor which describes the new namespace<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>   * @return the result of the async modify namespace operation. Use Future.get(long, TimeUnit) to<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>   *         wait on the operation to complete.<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>   * @throws IOException if a remote or network exception occurs<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>   */<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>  Future&lt;Void&gt; modifyNamespaceAsync(NamespaceDescriptor descriptor) throws IOException;<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span><a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  /**<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>   * Delete an existing namespace. Only empty namespaces (no tables) can be removed. Blocks until<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>   * namespace has been successfully deleted or an exception is thrown.<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>   * @param name namespace name<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>   * @throws IOException if a remote or network exception occurs<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>   */<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>  default void deleteNamespace(String name) throws IOException {<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>    get(deleteNamespaceAsync(name), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>  }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span><a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>  /**<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>   * Delete an existing namespace. Only empty namespaces (no tables) can be removed.<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>   * @param name namespace name<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>   * @return the result of the async delete namespace operation. Use Future.get(long, TimeUnit) to<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>   *         wait on the operation to complete.<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>   * @throws IOException if a remote or network exception occurs<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>   */<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>  Future&lt;Void&gt; deleteNamespaceAsync(String name) throws IOException;<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span><a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>  /**<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>   * Get a namespace descriptor by name.<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>   * @param name name of namespace descriptor<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>   * @return A descriptor<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>   * @throws org.apache.hadoop.hbase.NamespaceNotFoundException<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>   * @throws IOException if a remote or network exception occurs<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>   */<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  NamespaceDescriptor getNamespaceDescriptor(String name)<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>      throws NamespaceNotFoundException, IOException;<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span><a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  /**<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>   * List available namespaces<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>   *<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>   * @return List of namespace names<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>   * @throws IOException if a remote or network exception occurs<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>   */<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>  String[] listNamespaces() throws IOException;<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span><a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>  /**<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>   * List available namespace descriptors<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span>   *<a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>   * @return List of descriptors<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>   * @throws IOException if a remote or network exception occurs<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>   */<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>  NamespaceDescriptor[] listNamespaceDescriptors() throws IOException;<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span><a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>  /**<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>   * Get list of table descriptors by namespace.<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>   * @param name namespace name<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>   * @return returns a list of TableDescriptors<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>   * @throws IOException if a remote or network exception occurs<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   */<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>  List&lt;TableDescriptor&gt; listTableDescriptorsByNamespace(byte[] name) throws IOException;<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span><a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>  /**<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * Get list of table names by namespace.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   * @param name namespace name<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>   * @return The list of table names in the namespace<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>   * @throws IOException if a remote or network exception occurs<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>   */<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>  TableName[] listTableNamesByNamespace(String name) throws IOException;<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span><a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>  /**<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span>   * Get the regions of a given table.<a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>   *<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>   * @param tableName the name of the table<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * @return List of {@link RegionInfo}.<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @throws IOException if a remote or network exception occurs<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   */<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>  List&lt;RegionInfo&gt; getRegions(TableName tableName) throws IOException;<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span><a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>  @Override<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>  void close();<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span><a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>  /**<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>   * Get tableDescriptors.<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>   *<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span>   * @param tableNames List of table names<a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>   * @return returns a list of TableDescriptors<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>   * @throws IOException if a remote or network exception occurs<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>   */<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>  List&lt;TableDescriptor&gt; listTableDescriptors(List&lt;TableName&gt; tableNames)<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>    throws IOException;<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span><a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>  /**<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>   * Abort a procedure.<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>   * &lt;p/&gt;<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>   * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>   * @param procId ID of the procedure to abort<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>   * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>   * @return &lt;code&gt;true&lt;/code&gt; if aborted, &lt;code&gt;false&lt;/code&gt; if procedure already completed or does<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>   *         not exist<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>   * @throws IOException if a remote or network exception occurs<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>   * @deprecated since 2.1.1 and will be removed in 4.0.0.<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21223"&gt;HBASE-21223&lt;/a&gt;<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>   */<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>  @Deprecated<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>  default boolean abortProcedure(long procId, boolean mayInterruptIfRunning) throws IOException {<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>    return get(abortProcedureAsync(procId, mayInterruptIfRunning), getSyncWaitTimeout(),<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>      TimeUnit.MILLISECONDS);<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>  }<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span><a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>  /**<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>   * Abort a procedure but does not block and wait for completion.<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete.<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>   * It may throw ExecutionException if there was an error while executing the operation<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>   * or TimeoutException in case the wait timeout was not long enough to allow the<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>   * operation to complete.<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span>   * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   *<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   * @param procId ID of the procedure to abort<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>   * @return &lt;code&gt;true&lt;/code&gt; if aborted, &lt;code&gt;false&lt;/code&gt; if procedure already completed or does not exist<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>   * @throws IOException if a remote or network exception occurs<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>   * @deprecated since 2.1.1 and will be removed in 4.0.0.<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21223"&gt;HBASE-21223&lt;/a&gt;<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>   */<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>  @Deprecated<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>  Future&lt;Boolean&gt; abortProcedureAsync(long procId, boolean mayInterruptIfRunning)<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>      throws IOException;<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span><a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>  /**<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>   * Get procedures.<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>   * @return procedure list in JSON<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>   * @throws IOException if a remote or network exception occurs<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>   */<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  String getProcedures() throws IOException;<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Get locks.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @return lock list in JSON<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   * @throws IOException if a remote or network exception occurs<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>   */<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>  String getLocks() throws IOException;<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span><a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>  /**<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>   * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>   *<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>   * Note that the actual rolling of the log writer is asynchronous and may not be complete when<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>   * this method returns. As a side effect of this call, the named region server may schedule<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>   * store flushes at the request of the wal.<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>   *<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>   * @param serverName The servername of the regionserver.<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>   * @throws IOException if a remote or network exception occurs<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>   * @throws org.apache.hadoop.hbase.regionserver.wal.FailedLogCloseException<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>   */<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>  void rollWALWriter(ServerName serverName) throws IOException, FailedLogCloseException;<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span><a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>  /**<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>   * Helper that delegates to getClusterMetrics().getMasterCoprocessorNames().<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>   * @return an array of master coprocessors<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>   * @see org.apache.hadoop.hbase.ClusterMetrics#getMasterCoprocessorNames()<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>   */<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>  default List&lt;String&gt; getMasterCoprocessorNames() throws IOException {<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_COPROCESSORS))<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>      .getMasterCoprocessorNames();<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>  }<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span><a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>  /**<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>   * Get the current compaction state of a table. It could be in a major compaction, a minor<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   * compaction, both, or none.<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>   *<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>   * @param tableName table to examine<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>   * @return the current compaction state<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * @throws IOException if a remote or network exception occurs<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   */<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>  CompactionState getCompactionState(TableName tableName) throws IOException;<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span><a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>  /**<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>   * Get the current compaction state of a table. It could be in a compaction, or none.<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>   *<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>   * @param tableName table to examine<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>   * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>   * @return the current compaction state<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>   * @throws IOException if a remote or network exception occurs<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>  CompactionState getCompactionState(TableName tableName,<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>    CompactType compactType) throws IOException;<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span><a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>  /**<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * Get the current compaction state of region. It could be in a major compaction, a minor<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   * compaction, both, or none.<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>   *<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>   * @param regionName region to examine<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>   * @return the current compaction state<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>   * @throws IOException if a remote or network exception occurs<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>   */<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>  CompactionState getCompactionStateForRegion(byte[] regionName) throws IOException;<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span><a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>  /**<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   * Get the timestamp of the last major compaction for the passed table<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   *<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * The timestamp of the oldest HFile resulting from a major compaction of that table,<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * or 0 if no such HFile could be found.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   *<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   * @param tableName table to examine<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>   * @return the last major compaction timestamp or 0<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>   * @throws IOException if a remote or network exception occurs<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>   */<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>  long getLastMajorCompactionTimestamp(TableName tableName) throws IOException;<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span><a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>  /**<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>   * Get the timestamp of the last major compaction for the passed region.<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>   *<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>   * The timestamp of the oldest HFile resulting from a major compaction of that region,<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>   * or 0 if no such HFile could be found.<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>   *<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>   * @param regionName region to examine<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * @return the last major compaction timestamp or 0<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * @throws IOException if a remote or network exception occurs<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   */<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>  long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException;<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span><a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  /**<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>   * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>   * taken. If the table is disabled, an offline snapshot is taken. Snapshots are taken<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>   * sequentially even when requested concurrently, across all tables. Snapshots are considered<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>   * unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Attempts to take a snapshot with the same<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   * name (even a different type or with different parameters) will fail with a<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>   * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>   * naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>   * @param snapshotName name of the snapshot to be created<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * @param tableName name of the table for which snapshot is created<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>   * @throws IOException if a remote or network exception occurs<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>   * @throws org.apache.hadoop.hbase.snapshot.SnapshotCreationException if snapshot creation failed<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>   */<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>  default void snapshot(String snapshotName, TableName tableName)<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>      throws IOException, SnapshotCreationException, IllegalArgumentException {<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    snapshot(snapshotName, tableName, SnapshotType.FLUSH);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>  }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span><a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>  /**<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>   * all tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>   * different parameters) will fail with a {@link SnapshotCreationException} indicating the<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>   * duplicate naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>   * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>   *          snapshots stored on the cluster<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>   * @param tableName name of the table to snapshot<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>   * @param type type of snapshot to take<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>   * @throws IOException we fail to reach the master<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>   */<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>  default void snapshot(String snapshotName, TableName tableName, SnapshotType type)<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      throws IOException, SnapshotCreationException, IllegalArgumentException {<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>    snapshot(new SnapshotDescription(snapshotName, tableName, type));<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>  }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>  /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>   * all tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>   * different parameters) will fail with a {@link SnapshotCreationException} indicating the<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>   * duplicate naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>   * Snapshot can live with ttl seconds.<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   *<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   * @param snapshotName  name to give the snapshot on the filesystem. Must be unique from all other<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   *                      snapshots stored on the cluster<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>   * @param tableName     name of the table to snapshot<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>   * @param type          type of snapshot to take<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>   * @param snapshotProps snapshot additional properties e.g. TTL<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>   * @throws IOException               we fail to reach the master<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>   * @throws IllegalArgumentException  if the snapshot request is formatted incorrectly<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>   */<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>  default void snapshot(String snapshotName, TableName tableName, SnapshotType type,<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>                        Map&lt;String, Object&gt; snapshotProps) throws IOException,<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>      SnapshotCreationException, IllegalArgumentException {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>    snapshot(new SnapshotDescription(snapshotName, tableName, type, snapshotProps));<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span>  }<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span><a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>  /**<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   * all tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>   * different parameters) will fail with a {@link SnapshotCreationException} indicating the<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>   * duplicate naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>   * Snapshot can live with ttl seconds.<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>   *<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>   * @param snapshotName  name to give the snapshot on the filesystem. Must be unique from all other<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>   *                      snapshots stored on the cluster<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>   * @param tableName     name of the table to snapshot<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>   * @param snapshotProps snapshot additional properties e.g. TTL<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>   * @throws IOException               we fail to reach the master<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * @throws IllegalArgumentException  if the snapshot request is formatted incorrectly<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   */<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>  default void snapshot(String snapshotName, TableName tableName,<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>                        Map&lt;String, Object&gt; snapshotProps) throws IOException,<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>      SnapshotCreationException, IllegalArgumentException {<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>    snapshot(new SnapshotDescription(snapshotName, tableName, SnapshotType.FLUSH, snapshotProps));<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>  }<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span><a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>  /**<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>   * Take a snapshot and wait for the server to complete that snapshot (blocking). Snapshots are<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>   * considered unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Snapshots are taken sequentially<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>   * even when requested concurrently, across all tables. Attempts to take a snapshot with the same<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>   * name (even a different type or with different parameters) will fail with a<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   * {@link SnapshotCreationException} indicating the duplicate naming. Snapshot names follow the<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>   * same naming constraints as tables in HBase. See<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}. You should<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>   * probably use {@link #snapshot(String, org.apache.hadoop.hbase.TableName)} unless you are sure<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>   * about the type of snapshot that you want to take.<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   * @param snapshot snapshot to take<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>   * @throws IOException or we lose contact with the master.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>   * @throws SnapshotCreationException if snapshot failed to be taken<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>   */<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>  void snapshot(SnapshotDescription snapshot)<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>      throws IOException, SnapshotCreationException, IllegalArgumentException;<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>  /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * Take a snapshot without waiting for the server to complete that snapshot (asynchronous).<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   * Snapshots are considered unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Snapshots are taken<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   * sequentially even when requested concurrently, across all tables.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   *<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>   * @param snapshot snapshot to take<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>   * @throws IOException if the snapshot did not succeed or we lose contact with the master.<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>   * @throws SnapshotCreationException if snapshot creation failed<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>   * @throws IllegalArgumentException if the snapshot request is formatted incorrectly<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>   */<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>  Future&lt;Void&gt; snapshotAsync(SnapshotDescription snapshot)<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>      throws IOException, SnapshotCreationException;<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>  /**<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>   * Check the current state of the passed snapshot. There are three possible states: &lt;ol&gt;<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt; &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>   * &lt;li&gt;finished with error - throws the exception that caused the snapshot to fail&lt;/li&gt; &lt;/ol&gt; The<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * cluster only knows about the most recent snapshot. Therefore, if another snapshot has been<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   * run/started since the snapshot you are checking, you will receive an {@link<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>   * org.apache.hadoop.hbase.snapshot.UnknownSnapshotException}.<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>   *<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>   * @param snapshot description of the snapshot to check<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the snapshot is completed, &lt;tt&gt;false&lt;/tt&gt; if the snapshot is still<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>   * running<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>   * @throws IOException if we have a network issue<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>   * @throws org.apache.hadoop.hbase.snapshot.HBaseSnapshotException if the snapshot failed<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>   * @throws org.apache.hadoop.hbase.snapshot.UnknownSnapshotException if the requested snapshot is<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>   * unknown<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>   */<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>  boolean isSnapshotFinished(SnapshotDescription snapshot)<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>      throws IOException, HBaseSnapshotException, UnknownSnapshotException;<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span><a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>  /**<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If the<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>   * &lt;code&gt;true&lt;/code&gt;, a snapshot of the current table is taken before executing the restore<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>   * operation. In case of restore failure, the failsafe snapshot will be restored. If the restore<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>   * completes without problem the failsafe snapshot is deleted.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>   * @param snapshotName name of the snapshot to restore<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>   * @throws IOException if a remote or network exception occurs<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>   * @throws RestoreSnapshotException if snapshot failed to be restored<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * @throws IllegalArgumentException if the restore request is formatted incorrectly<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   */<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>  void restoreSnapshot(String snapshotName) throws IOException, RestoreSnapshotException;<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span><a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>  /**<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>   * 'takeFailSafeSnapshot' is set to &lt;code&gt;true&lt;/code&gt;, a snapshot of the current table is taken<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>   * before executing the restore operation. In case of restore failure, the failsafe snapshot will<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>   * be restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>   * failsafe snapshot name is configurable by using the property<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>   * @param snapshotName name of the snapshot to restore<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>   * @param takeFailSafeSnapshot &lt;code&gt;true&lt;/code&gt; if the failsafe snapshot should be taken<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>   * @throws IOException if a remote or network exception occurs<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * @throws RestoreSnapshotException if snapshot failed to be restored<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   * @throws IllegalArgumentException if the restore request is formatted incorrectly<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   */<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>  default void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot)<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      throws IOException, RestoreSnapshotException {<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>    restoreSnapshot(snapshotName, takeFailSafeSnapshot, false);<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>  }<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span><a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>  /**<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>   * 'takeFailSafeSnapshot' is set to &lt;code&gt;true&lt;/code&gt;, a snapshot of the current table is taken<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>   * before executing the restore operation. In case of restore failure, the failsafe snapshot will<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>   * be restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>   * failsafe snapshot name is configurable by using the property<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>   * @param snapshotName name of the snapshot to restore<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>   * @param takeFailSafeSnapshot &lt;code&gt;true&lt;/code&gt; if the failsafe snapshot should be taken<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to restore acl of snapshot<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>   * @throws IOException if a remote or network exception occurs<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>   * @throws RestoreSnapshotException if snapshot failed to be restored<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>   * @throws IllegalArgumentException if the restore request is formatted incorrectly<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>   */<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>  void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot, boolean restoreAcl)<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>      throws IOException, RestoreSnapshotException;<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>  /**<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>   * Create a new table by cloning the snapshot content.<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>   * @throws IOException if a remote or network exception occurs<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>   * @throws TableExistsException if table to be created already exists<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>   * @throws RestoreSnapshotException if snapshot failed to be cloned<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>   * @throws IllegalArgumentException if the specified table has not a valid name<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>   */<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>  default void cloneSnapshot(String snapshotName, TableName tableName)<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>      throws IOException, TableExistsException, RestoreSnapshotException {<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>    cloneSnapshot(snapshotName, tableName, false);<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  }<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span><a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>  /**<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * Create a new table by cloning the snapshot content.<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to clone acl into newly created table<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>   * @throws IOException if a remote or network exception occurs<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>   * @throws TableExistsException if table to be created already exists<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>   * @throws RestoreSnapshotException if snapshot failed to be cloned<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>   * @throws IllegalArgumentException if the specified table has not a valid name<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>   */<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>  default void cloneSnapshot(String snapshotName, TableName tableName, boolean restoreAcl)<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      throws IOException, TableExistsException, RestoreSnapshotException {<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>    get(cloneSnapshotAsync(snapshotName, tableName, restoreAcl), getSyncWaitTimeout(),<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      TimeUnit.MILLISECONDS);<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span><a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * Create a new table by cloning the snapshot content, but does not block and wait for it to be<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * completely cloned. You can use Future.get(long, TimeUnit) to wait on the operation to complete.<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * It may throw ExecutionException if there was an error while executing the operation or<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   * TimeoutException in case the wait timeout was not long enough to allow the operation to<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>   * complete.<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * @throws IOException if a remote or network exception occurs<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   * @throws TableExistsException if table to be cloned already exists<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>   * @return the result of the async clone snapshot. You can use Future.get(long, TimeUnit) to wait<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>   *         on the operation to complete.<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>   */<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>  default Future&lt;Void&gt; cloneSnapshotAsync(String snapshotName, TableName tableName)<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>      throws IOException, TableExistsException {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>    return cloneSnapshotAsync(snapshotName, tableName, false);<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>  }<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span><a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>  /**<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>   * Create a new table by cloning the snapshot content.<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to clone acl into newly created table<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>   * @throws IOException if a remote or network exception occurs<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>   * @throws TableExistsException if table to be created already exists<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>   * @throws RestoreSnapshotException if snapshot failed to be cloned<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>   * @throws IllegalArgumentException if the specified table has not a valid name<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>   */<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>  Future&lt;Void&gt; cloneSnapshotAsync(String snapshotName, TableName tableName, boolean restoreAcl)<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      throws IOException, TableExistsException, RestoreSnapshotException;<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span><a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>  /**<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>   * Execute a distributed procedure on a cluster.<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>   *<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>   * root ZK node name of the procedure).<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>   * optional.<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>   * @throws IOException if a remote or network exception occurs<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>   */<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  void execProcedure(String signature, String instance, Map&lt;String, String&gt; props)<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      throws IOException;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span><a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>  /**<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   * Execute a distributed procedure on a cluster.<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>   *<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>   * root ZK node name of the procedure).<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * optional.<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   * @return data returned after procedure execution. null if no return data.<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>   * @throws IOException if a remote or network exception occurs<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>   */<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>  byte[] execProcedureWithReturn(String signature, String instance, Map&lt;String, String&gt; props)<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>      throws IOException;<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span><a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  /**<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>   * Check the current state of the specified procedure. There are three possible states: &lt;ol&gt;<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt; &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>   * &lt;li&gt;finished with error - throws the exception that caused the procedure to fail&lt;/li&gt; &lt;/ol&gt;<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>   *<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>   * @param signature The signature that uniquely identifies a procedure<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>   * @param instance The instance name of the procedure<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>   * @return &lt;code&gt;true&lt;/code&gt; if the specified procedure is finished successfully, &lt;code&gt;false&lt;/code&gt; if it is still running<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>   * @throws IOException if the specified procedure finished with error<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>   */<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>  boolean isProcedureFinished(String signature, String instance, Map&lt;String, String&gt; props)<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      throws IOException;<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span><a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>  /**<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>   * List completed snapshots.<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>   *<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>   * @return a list of snapshot descriptors for completed snapshots<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>   * @throws IOException if a network error occurs<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>   */<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>  List&lt;SnapshotDescription&gt; listSnapshots() throws IOException;<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span><a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>  /**<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>   * List all the completed snapshots matching the given pattern.<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>   *<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>   * @param pattern The compiled regular expression to match against<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>   * @return list of SnapshotDescription<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>   * @throws IOException if a remote or network exception occurs<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>   */<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>  List&lt;SnapshotDescription&gt; listSnapshots(Pattern pattern) throws IOException;<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span><a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>  /**<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>   * List all the completed snapshots matching the given table name regular expression and snapshot<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>   * name regular expression.<a name="line.1648"></a>
+<span class="sourceLineNo">1649</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.1649"></a>
+<span class="sourceLineNo">1650</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.1650"></a>
+<span class="sourceLineNo">1651</span>   * @return list of completed SnapshotDescription<a name="line.1651"></a>
+<span class="sourceLineNo">1652</span>   * @throws IOException if a remote or network exception occurs<a name="line.1652"></a>
+<span class="sourceLineNo">1653</span>   */<a name="line.1653"></a>
+<span class="sourceLineNo">1654</span>  List&lt;SnapshotDescription&gt; listTableSnapshots(Pattern tableNamePattern,<a name="line.1654"></a>
+<span class="sourceLineNo">1655</span>      Pattern snapshotNamePattern) throws IOException;<a name="line.1655"></a>
+<span class="sourceLineNo">1656</span><a name="line.1656"></a>
+<span class="sourceLineNo">1657</span>  /**<a name="line.1657"></a>
+<span class="sourceLineNo">1658</span>   * Delete an existing snapshot.<a name="line.1658"></a>
+<span class="sourceLineNo">1659</span>   *<a name="line.1659"></a>
+<span class="sourceLineNo">1660</span>   * @param snapshotName name of the snapshot<a name="line.1660"></a>
+<span class="sourceLineNo">1661</span>   * @throws IOException if a remote or network exception occurs<a name="line.1661"></a>
+<span class="sourceLineNo">1662</span>   */<a name="line.1662"></a>
+<span class="sourceLineNo">1663</span>  void deleteSnapshot(String snapshotName) throws IOException;<a name="line.1663"></a>
+<span class="sourceLineNo">1664</span><a name="line.1664"></a>
+<span class="sourceLineNo">1665</span>  /**<a name="line.1665"></a>
+<span class="sourceLineNo">1666</span>   * Delete existing snapshots whose names match the pattern passed.<a name="line.1666"></a>
+<span class="sourceLineNo">1667</span>   *<a name="line.1667"></a>
+<span class="sourceLineNo">1668</span>   * @param pattern pattern for names of the snapshot to match<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span>   * @throws IOException if a remote or network exception occurs<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span>   */<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span>  void deleteSnapshots(Pattern pattern) throws IOException;<a name="line.1671"></a>
+<span class="sourceLineNo">1672</span><a name="line.1672"></a>
+<span class="sourceLineNo">1673</span>  /**<a name="line.1673"></a>
+<span class="sourceLineNo">1674</span>   * Delete all existing snapshots matching the given table name regular expression and snapshot<a name="line.1674"></a>
+<span class="sourceLineNo">1675</span>   * name regular expression.<a name="line.1675"></a>
+<span class="sourceLineNo">1676</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.1676"></a>
+<span class="sourceLineNo">1677</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.1677"></a>
+<span class="sourceLineNo">1678</span>   * @throws IOException if a remote or network exception occurs<a name="line.1678"></a>
+<span class="sourceLineNo">1679</span>   */<a name="line.1679"></a>
+<span class="sourceLineNo">1680</span>  void deleteTableSnapshots(Pattern tableNamePattern, Pattern snapshotNamePattern)<a name="line.1680"></a>
+<span class="sourceLineNo">1681</span>      throws IOException;<a name="line.1681"></a>
+<span class="sourceLineNo">1682</span><a name="line.1682"></a>
+<span class="sourceLineNo">1683</span>  /**<a name="line.1683"></a>
+<span class="sourceLineNo">1684</span>   * Apply the new quota settings.<a name="line.1684"></a>
+<span class="sourceLineNo">1685</span>   *<a name="line.1685"></a>
+<span class="sourceLineNo">1686</span>   * @param quota the quota settings<a name="line.1686"></a>
+<span class="sourceLineNo">1687</span>   * @throws IOException if a remote or network exception occurs<a name="line.1687"></a>
+<span class="sourceLineNo">1688</span>   */<a name="line.1688"></a>
+<span class="sourceLineNo">1689</span>  void setQuota(QuotaSettings quota) throws IOException;<a name="line.1689"></a>
+<span class="sourceLineNo">1690</span><a name="line.1690"></a>
+<span class="sourceLineNo">1691</span>  /**<a name="line.1691"></a>
+<span class="sourceLineNo">1692</span>   * List the quotas based on the filter.<a name="line.1692"></a>
+<span class="sourceLineNo">1693</span>   * @param filter the quota settings filter<a name="line.1693"></a>
+<span class="sourceLineNo">1694</span>   * @return the QuotaSetting list<a name="line.1694"></a>
+<span class="sourceLineNo">1695</span>   * @throws IOException if a remote or network exception occurs<a name="line.1695"></a>
+<span class="sourceLineNo">1696</span>   */<a name="line.1696"></a>
+<span class="sourceLineNo">1697</span>  List&lt;QuotaSettings&gt; getQuota(QuotaFilter filter) throws IOException;<a name="line.1697"></a>
+<span class="sourceLineNo">1698</span><a name="line.1698"></a>
+<span class="sourceLineNo">1699</span>  /**<a name="line.1699"></a>
+<span class="sourceLineNo">1700</span>   * Creates and returns a {@link com.google.protobuf.RpcChannel} instance connected to the active<a name="line.1700"></a>
+<span class="sourceLineNo">1701</span>   * master. &lt;p&gt; The obtained {@link com.google.protobuf.RpcChannel} instance can be used to access<a name="line.1701"></a>
+<span class="sourceLineNo">1702</span>   * a published coprocessor {@link com.google.protobuf.Service} using standard protobuf service<a name="line.1702"></a>
+<span class="sourceLineNo">1703</span>   * invocations: &lt;/p&gt; &lt;div style="background-color: #cccccc; padding: 2px"&gt;<a name="line.1703"></a>
+<span class="sourceLineNo">1704</span>   * &lt;blockquote&gt;&lt;pre&gt;<a name="line.1704"></a>
+<span class="sourceLineNo">1705</span>   * CoprocessorRpcChannel channel = myAdmin.coprocessorService();<a name="line.1705"></a>
+<span class="sourceLineNo">1706</span>   * MyService.BlockingInterface service = MyService.newBlockingStub(channel);<a name="line.1706"></a>
+<span class="sourceLineNo">1707</span>   * MyCallRequest request = MyCallRequest.newBuilder()<a name="line.1707"></a>
+<span class="sourceLineNo">1708</span>   *     ...<a name="line.1708"></a>
+<span class="sourceLineNo">1709</span>   *     .build();<a name="line.1709"></a>
+<span class="sourceLineNo">1710</span>   * MyCallResponse response = service.myCall(null, request);<a name="line.1710"></a>
+<span class="sourceLineNo">1711</span>   * &lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;<a name="line.1711"></a>
+<span class="sourceLineNo">1712</span>   *<a name="line.1712"></a>
+<span class="sourceLineNo">1713</span>   * @return A MasterCoprocessorRpcChannel instance<a name="line.1713"></a>
+<span class="sourceLineNo">1714</span>   * @deprecated since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any<a name="line.1714"></a>
+<span class="sourceLineNo">1715</span>   *             more. Use the coprocessorService methods in {@link AsyncAdmin} instead.<a name="line.1715"></a>
+<span class="sourceLineNo">1716</span>   */<a name="line.1716"></a>
+<span class="sourceLineNo">1717</span>  @Deprecated<a name="line.1717"></a>
+<span class="sourceLineNo">1718</span>  CoprocessorRpcChannel coprocessorService();<a name="line.1718"></a>
+<span class="sourceLineNo">1719</span><a name="line.1719"></a>
 <span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span><a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>  /**<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>   * Creates and returns a {@link com.google.protobuf.RpcChannel} instance<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>   * connected to the passed region server.<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>   *<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>   * &lt;p&gt;<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>   * The obtained {@link com.google.protobuf.RpcChannel} instance can be used to access a published<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * coprocessor {@link com.google.protobuf.Service} using standard protobuf service invocations:<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * &lt;/p&gt;<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   *<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>   * &lt;div style="background-color: #cccccc; padding: 2px"&gt;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>   * &lt;blockquote&gt;&lt;pre&gt;<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>   * CoprocessorRpcChannel channel = myAdmin.coprocessorService(serverName);<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>   * MyService.BlockingInterface service = MyService.newBlockingStub(channel);<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>   * MyCallRequest request = MyCallRequest.newBuilder()<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>   *     ...<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>   *     .build();<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>   * MyCallResponse response = service.myCall(null, request);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>   * &lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>   *<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>   * @param serverName the server name to which the endpoint call is made<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>   * @return A RegionServerCoprocessorRpcChannel instance<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>   * @deprecated since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>   *             more. Use the coprocessorService methods in {@link AsyncAdmin} instead.<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>   */<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>  @Deprecated<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>  CoprocessorRpcChannel coprocessorService(ServerName serverName);<a name="line.1747"></a>
+<span class="sourceLineNo">1721</span>  /**<a name="line.1721"></a>
+<span class="sourceLineNo">1722</span>   * Creates and returns a {@link com.google.protobuf.RpcChannel} instance<a name="line.1722"></a>
+<span class="sourceLineNo">1723</span>   * connected to the passed region server.<a name="line.1723"></a>
+<span class="sourceLineNo">1724</span>   *<a name="line.1724"></a>
+<span class="sourceLineNo">1725</span>   * &lt;p&gt;<a name="line.1725"></a>
+<span class="sourceLineNo">1726</span>   * The obtained {@link com.google.protobuf.RpcChannel} instance can be used to access a published<a name="line.1726"></a>
+<span class="sourceLineNo">1727</span>   * coprocessor {@link com.google.protobuf.Service} using standard protobuf service invocations:<a name="line.1727"></a>
+<span class="sourceLineNo">1728</span>   * &lt;/p&gt;<a name="line.1728"></a>
+<span class="sourceLineNo">1729</span>   *<a name="line.1729"></a>
+<span class="sourceLineNo">1730</span>   * &lt;div style="background-color: #cccccc; padding: 2px"&gt;<a name="line.1730"></a>
+<span class="sourceLineNo">1731</span>   * &lt;blockquote&gt;&lt;pre&gt;<a name="line.1731"></a>
+<span class="sourceLineNo">1732</span>   * CoprocessorRpcChannel channel = myAdmin.coprocessorService(serverName);<a name="line.1732"></a>
+<span class="sourceLineNo">1733</span>   * MyService.BlockingInterface service = MyService.newBlockingStub(channel);<a name="line.1733"></a>
+<span class="sourceLineNo">1734</span>   * MyCallRequest request = MyCallRequest.newBuilder()<a name="line.1734"></a>
+<span class="sourceLineNo">1735</span>   *     ...<a name="line.1735"></a>
+<span class="sourceLineNo">1736</span>   *     .build();<a name="line.1736"></a>
+<span class="sourceLineNo">1737</span>   * MyCallResponse response = service.myCall(null, request);<a name="line.1737"></a>
+<span class="sourceLineNo">1738</span>   * &lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;<a name="line.1738"></a>
+<span class="sourceLineNo">1739</span>   *<a name="line.1739"></a>
+<span class="sourceLineNo">1740</span>   * @param serverName the server name to which the endpoint call is made<a name="line.1740"></a>
+<span class="sourceLineNo">1741</span>   * @return A RegionServerCoprocessorRpcChannel instance<a name="line.1741"></a>
+<span class="sourceLineNo">1742</span>   * @deprecated since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any<a name="line.1742"></a>
+<span class="sourceLineNo">1743</span>   *             more. Use the coprocessorService methods in {@link AsyncAdmin} instead.<a name="line.1743"></a>
+<span class="sourceLineNo">1744</span>   */<a name="line.1744"></a>
+<span class="sourceLineNo">1745</span>  @Deprecated<a name="line.1745"></a>
+<span class="sourceLineNo">1746</span>  CoprocessorRpcChannel coprocessorService(ServerName serverName);<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span><a name="line.1747"></a>
 <span class="sourceLineNo">1748</span><a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>  /**<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>   * Update the configuration and trigger an online config change<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>   * on the regionserver.<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>   * @param server : The server whose config needs to be updated.<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>   * @throws IOException if a remote or network exception occurs<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>   */<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>  void updateConfiguration(ServerName server) throws IOException;<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span><a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>  /**<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>   * Update the configuration and trigger an online config change<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>   * on all the regionservers.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>   * @throws IOException if a remote or network exception occurs<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>   */<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>  void updateConfiguration() throws IOException;<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span><a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>  /**<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>   * Get the info port of the current master if one is available.<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>   * @return master info port<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>   * @throws IOException if a remote or network exception occurs<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>   */<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>  default int getMasterInfoPort() throws IOException {<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_INFO_PORT)).getMasterInfoPort();<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  }<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span><a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>  /**<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>   * Return the set of supported security capabilities.<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>   * @throws IOException if a remote or network exception occurs<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>   * @throws UnsupportedOperationException<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>   */<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>  List&lt;SecurityCapability&gt; getSecurityCapabilities() throws IOException;<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span><a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>  /**<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>   * Turn the split switch on or off.<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>   * @param enabled enabled or not<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>   * @param synchronous If &lt;code&gt;true&lt;/code&gt;, it waits until current split() call, if outstanding,<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>   *          to return.<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>   * @return Previous switch value<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>   * @throws IOException if a remote or network exception occurs<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>   */<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>  boolean splitSwitch(boolean enabled, boolean synchronous) throws IOException;<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  /**<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>   * Turn the merge switch on or off.<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>   * @param enabled enabled or not<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>   * @param synchronous If &lt;code&gt;true&lt;/code&gt;, it waits until current merge() call, if outstanding,<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>   *          to return.<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>   * @return Previous switch value<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>   * @throws IOException if a remote or network exception occurs<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>   */<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>  boolean mergeSwitch(boolean enabled, boolean synchronous) throws IOException;<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span><a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  /**<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>   * Query the current state of the split switch.<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>   * @return &lt;code&gt;true&lt;/code&gt; if the switch is enabled, &lt;code&gt;false&lt;/code&gt; otherwise.<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>   * @throws IOException if a remote or network exception occurs<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>   */<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>  boolean isSplitEnabled() throws IOException;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span><a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>  /**<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>   * Query the current state of the merge switch.<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>   * @return &lt;code&gt;true&lt;/code&gt; if the switch is enabled, &lt;code&gt;false&lt;/code&gt; otherwise.<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>   * @throws IOException if a remote or network exception occurs<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>   */<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>  boolean isMergeEnabled() throws IOException;<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>  /**<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>   * Add a new replication peer for replicating data to slave cluster.<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>   * @param peerId a short name that identifies the peer<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>   * @param peerConfig configuration for the replication peer<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>   * @throws IOException if a remote or network exception occurs<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>   */<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>  default void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>      throws IOException {<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    addReplicationPeer(peerId, peerConfig, true);<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>  }<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span><a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>  /**<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>   * Add a new replication peer for replicating data to slave cluster.<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>   * @param peerId a short name that identifies the peer<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>   * @param peerConfig configuration for the replication peer<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>   * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>   * @throws IOException if a remote or network exception occurs<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>   */<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>  default void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>      throws IOException {<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    get(addReplicationPeerAsync(peerId, peerConfig, enabled), getSyncWaitTimeout(),<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>      TimeUnit.MILLISECONDS);<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>  }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span><a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>  /**<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>   * Add a new replication peer but does not block and wait for it.<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>   * &lt;p/&gt;<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>   * @param peerId a short name that identifies the peer<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>   * @param peerConfig configuration for the replication peer<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>   * @return the result of the async operation<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>   */<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>  default Future&lt;Void&gt; addReplicationPeerAsync(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>      throws IOException {<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span>    return addReplicationPeerAsync(peerId, peerConfig, true);<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  }<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span><a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  /**<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>   * Add a new replication peer but does not block and wait for it.<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>   * &lt;p&gt;<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span>   * @param peerId a short name that identifies the peer<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>   * @param peerConfig configuration for the replication peer<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * @return the result of the async operation<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>   */<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>  Future&lt;Void&gt; addReplicationPeerAsync(String peerId, ReplicationPeerConfig peerConfig,<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>      boolean enabled) throws IOException;<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span><a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>  /**<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>   * Remove a peer and stop the replication.<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>   * @param peerId a short name that identifies the peer<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>   * @throws IOException if a remote or network exception occurs<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>   */<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>  default void removeReplicationPeer(String peerId) throws IOException {<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>    get(removeReplicationPeerAsync(peerId), getSyncWaitTimeout(),<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span>      TimeUnit.MILLISECONDS);<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  }<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span><a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>  /**<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>   * Remove a replication peer but does not block and wait for it.<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>   * &lt;p&gt;<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * @param peerId a short name that identifies the peer<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   * @return the result of the async operation<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>   */<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>  Future&lt;Void&gt; removeReplicationPeerAsync(String peerId) throws IOException;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span><a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>  /**<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>   * Restart the replication stream to the specified peer.<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span>   * @param peerId a short name that identifies the peer<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>   * @throws IOException if a remote or network exception occurs<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   */<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>  default void enableReplicationPeer(String peerId) throws IOException {<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>    get(enableReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>  }<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span><a name="line.1900"></a>
-<span class="sourceLineNo">1901</span>  /**<a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>   * Enable a replication peer but does not block and wait for it.<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * &lt;p&gt;<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>   * @param peerId a short name that identifies the peer<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>   * @return the result of the async operation<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>   */<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span>  Future&lt;Void&gt; enableReplicationPeerAsync(String peerId) throws IOException;<a name="line.1911"></a>
-<span class="sourceLineNo">1912</span><a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>  /**<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * Stop the replication stream to the specified peer.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   * @param peerId a short name that identifies the peer<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>   * @throws IOException if a remote or network exception occurs<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>   */<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  default void disableReplicationPeer(String peerId) throws IOException {<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span>    get(disableReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  }<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span><a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>  /**<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>   * Disable a replication peer but does not block and wait for it.<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span>   * &lt;p/&gt;<a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>   * @param peerId a short name that identifies the peer<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>   * @return the result of the async operation<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span>   */<a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  Future&lt;Void&gt; disableReplicationPeerAsync(String peerId) throws IOException;<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span><a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>  /**<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * Returns the configured ReplicationPeerConfig for the specified peer.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   * @param peerId a short name that identifies the peer<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>   * @return ReplicationPeerConfig for the peer<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>   * @throws IOException if a remote or network exception occurs<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>   */<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>  ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws IOException;<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span><a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>  /**<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>   * Update the peerConfig for the specified peer.<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>   * @param peerId a short name that identifies the peer<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>   * @param peerConfig new config for the replication peer<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>   * @throws IOException if a remote or network exception occurs<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>   */<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>  default void updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>      throws IOException {<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>    get(updateReplicationPeerConfigAsync(peerId, peerConfig), getSyncWaitTimeout(),<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>      TimeUnit.MILLISECONDS);<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>  }<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span><a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>  /**<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>   * Update the peerConfig for the specified peer but does not block and wait for it.<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>   * &lt;p/&gt;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1958"></a>
-<span class="sourceLineNo">1959</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1959"></a>
-<span class="sourceLineNo">1960</span>   * @param peerId a short name that identifies the peer<a name="line.1960"></a>
-<span class="sourceLineNo">1961</span>   * @param peerConfig new config for the replication peer<a name="line.1961"></a>
-<span class="sourceLineNo">1962</span>   * @return the result of the async operation<a name="line.1962"></a>
-<span class="sourceLineNo">1963</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1963"></a>
-<span class="sourceLineNo">1964</span>   */<a name="line.1964"></a>
-<span class="sourceLineNo">1965</span>  Future&lt;Void&gt; updateReplicationPeerConfigAsync(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1965"></a>
-<span class="sourceLineNo">1966</span>      throws IOException;<a name="line.1966"></a>
-<span class="sourceLineNo">1967</span><a name="line.1967"></a>
-<span class="sourceLineNo">1968</span>  /**<a name="line.1968"></a>
-<span class="sourceLineNo">1969</span>   * Append the replicable table column family config from the specified peer.<a name="line.1969"></a>
-<span class="sourceLineNo">1970</span>   * @param id a short that identifies the cluster<a name="line.1970"></a>
-<span class="sourceLineNo">1971</span>   * @param tableCfs A map from tableName to column family names<a name="line.1971"></a>
-<span class="sourceLineNo">1972</span>   * @throws ReplicationException if tableCfs has conflict with existing config<a name="line.1972"></a>
-<span class="sourceLineNo">1973</span>   * @throws IOException if a remote or network exception occurs<a name="line.1973"></a>
-<span class="sourceLineNo">1974</span>   */<a name="line.1974"></a>
-<span class="sourceLineNo">1975</span>  default void appendReplicationPeerTableCFs(String id, Map&lt;TableName, List&lt;String&gt;&gt; tableCfs)<a name="line.1975"></a>
-<span class="sourceLineNo">1976</span>      throws ReplicationException, IOException {<a name="line.1976"></a>
-<span class="sourceLineNo">1977</span>    if (tableCfs == null) {<a name="line.1977"></a>
-<span class="sourceLineNo">1978</span>      throw new ReplicationException("tableCfs is null");<a name="line.1978"></a>
-<span class="sourceLineNo">1979</span>    }<a name="line.1979"></a>
-<span class="sourceLineNo">1980</span>    ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);<a name="line.1980"></a>
-<span class="sourceLineNo">1981</span>    ReplicationPeerConfig newPeerConfig =<a name="line.1981"></a>
-<span class="sourceLineNo">1982</span>      ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, peerConfig);<a name="line.1982"></a>
-<span class="sourceLineNo">1983</span>    updateReplicationPeerConfig(id, newPeerConfig);<a name="line.1983"></a>
-<span class="sourceLineNo">1984</span>  }<a name="line.1984"></a>
-<span class="sourceLineNo">1985</span><a name="line.1985"></a>
-<span class="sourceLineNo">1986</span>  /**<a name="line.1986"></a>
-<span class="sourceLineNo">1987</span>   * Remove some table-cfs from config of the specified peer.<a name="line.1987"></a>
-<span class="sourceLineNo">1988</span>   * @param id a short name that identifies the cluster<a name="line.1988"></a>
-<span class="sourceLineNo">1989</span>   * @param tableCfs A map from tableName to column family names<a name="line.1989"></a>
-<span class="sourceLineNo">1990</span>   * @throws ReplicationException if tableCfs has conflict with existing config<a name="line.1990"></a>
-<span class="sourceLineNo">1991</span>   * @throws IOException if a remote or network exception occurs<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span>   */<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>  default void removeReplicationPeerTableCFs(String id, Map&lt;TableName, List&lt;String&gt;&gt; tableCfs)<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span>      throws ReplicationException, IOException {<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span>    if (tableCfs == null) {<a name="line.1995"></a>
-<span class="sourceLineNo">1996</span>      throw new ReplicationException("tableCfs is null");<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span>    }<a name="line.1997"></a>
-<span class="sourceLineNo">1998</span>    ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);<a name="line.1998"></a>
-<span class="sourceLineNo">1999</span>    ReplicationPeerConfig newPeerConfig =<a name="line.1999"></a>
-<span class="sourceLineNo">2000</span>      ReplicationPeerConfigUtil.removeTableCFsFromReplicationPeerConfig(tableCfs, peerConfig, id);<a name="line.2000"></a>
-<span class="sourceLineNo">2001</span>    updateReplicationPeerConfig(id, newPeerConfig);<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span>  }<a name="line.2002"></a>
-<span class="sourceLineNo">2003</span><a name="line.2003"></a>
-<span class="sourceLineNo">2004</span>  /**<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span>   * Return a list of replication peers.<a name="line.2005"></a>
-<span class="sourceLineNo">2006</span>   * @return a list of replication peers description<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span>   * @throws IOException if a remote or network exception occurs<a name="line.2007"></a>
-<span class="sourceLineNo">2008</span>   */<a name="line.2008"></a>
-<span class="sourceLineNo">2009</span>  List&lt;ReplicationPeerDescription&gt; listReplicationPeers() throws IOException;<a name="line.2009"></a>
-<span class="sourceLineNo">2010</span><a name="line.2010"></a>
-<span class="sourceLineNo">2011</span>  /**<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span>   * Return a list of replication peers.<a name="line.2012"></a>
-<span class="sourceLineNo">2013</span>   * @param pattern The compiled regular expression to match peer id<a name="line.2013"></a>
-<span class="sourceLineNo">2014</span>   * @return a list of replication peers description<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span>   * @throws IOException if a remote or network exception occurs<a name="line.2015"></a>
-<span class="sourceLineNo">2016</span>   */<a name="line.2016"></a>
-<span class="sourceLineNo">2017</span>  List&lt;ReplicationPeerDescription&gt; listReplicationPeers(Pattern pattern) throws IOException;<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span><a name="line.2018"></a>
-<span class="sourceLineNo">2019</span>  /**<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span>   * Transit current cluster to a new state in a synchronous replication peer.<a name="line.2020"></a>
-<span class="sourceLineNo">2021</span>   * @param peerId a short name that identifies the peer<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span>   * @param state a new state of current cluster<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span>   * @throws IOException if a remote or network exception occurs<a name="line.2023"></a>
-<span class="sourceLineNo">2024</span>   */<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span>  default void transitReplicationPeerSyncReplicationState(String peerId, SyncReplicationState state)<a name="line.2025"></a>
-<span class="sourceLineNo">2026</span>      throws IOException {<a name="line.2026"></a>
-<span class="sourceLineNo">2027</span>    get(transitReplicationPeerSyncReplicationStateAsync(peerId, state), getSyncWaitTimeout(),<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span>      TimeUnit.MILLISECONDS);<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span>  }<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span><a name="line.2030"></a>
-<span class="sourceLineNo">2031</span>  /**<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span>   * Transit current cluster to a new state in a synchronous replication peer. But does not block<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span>   * and wait for it.<a name="line.2033"></a>
-<span class="sourceLineNo">2034</span>   * &lt;p&gt;<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.2037"></a>
-<span class="sourceLineNo">2038</span>   * @param peerId a short name that identifies the peer<a name="line.2038"></a>
-<span class="sourceLineNo">2039</span>   * @param state a new state of current cluster<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span>   * @throws IOException if a remote or network exception occurs<a name="line.2040"></a>
-<span class="sourceLineNo">2041</span>   */<a name="line.2041"></a>
-<span class="sourceLineNo">2042</span>  Future&lt;Void&gt; transitReplicationPeerSyncReplicationStateAsync(String peerId,<a name="line.2042"></a>
-<span class="sourceLineNo">2043</span>      SyncReplicationState state) throws IOException;<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span><a name="line.2044"></a>
-<span class="sourceLineNo">2045</span>  /**<a name="line.2045"></a>
-<span class="sourceLineNo">2046</span>   * Get the current cluster state in a synchronous replication peer.<a name="line.2046"></a>
-<span class="sourceLineNo">2047</span>   * @param peerId a short name that identifies the peer<a name="line.2047"></a>
-<span class="sourceLineNo">2048</span>   * @return the current cluster state<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span>   * @throws IOException if a remote or network exception occurs<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span>   */<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span>  default SyncReplicationState getReplicationPeerSyncReplicationState(String peerId)<a name="line.2051"></a>
-<span class="sourceLineNo">2052</span>      throws IOException {<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span>    List&lt;ReplicationPeerDescription&gt; peers = listReplicationPeers(Pattern.compile(peerId));<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span>    if (peers.isEmpty() || !peers.get(0).getPeerId().equals(peerId)) {<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span>      throw new IOException("Replication peer " + peerId + " does not exist");<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span>    }<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span>    return peers.get(0).getSyncReplicationState();<a name="line.2057"></a>
-<span class="sourceLineNo">2058</span>  }<a name="line.2058"></a>
-<span class="sourceLineNo">2059</span><a name="line.2059"></a>
-<span class="sourceLineNo">2060</span>  /**<a name="line.2060"></a>
-<span class="sourceLineNo">2061</span>   * Mark region server(s) as decommissioned to prevent additional regions from getting<a name="line.2061"></a>
-<span class="sourceLineNo">2062</span>   * assigned to them. Optionally unload the regions on the servers. If there are multiple servers<a name="line.2062"></a>
-<span class="sourceLineNo">2063</span>   * to be decommissioned, decommissioning them at the same time can prevent wasteful region<a name="line.2063"></a>
-<span class="sourceLineNo">2064</span>   * movements. Region unloading is asynchronous.<a name="line.2064"></a>
-<span class="sourceLineNo">2065</span>   * @param servers The list of servers to decommission.<a name="line.2065"></a>
-<span class="sourceLineNo">2066</span>   * @param offload True to offload the regions from the decommissioned servers<a name="line.2066"></a>
-<span class="sourceLineNo">2067</span>   * @throws IOException if a remote or network exception occurs<a name="line.2067"></a>
-<span class="sourceLineNo">2068</span>   */<a name="line.2068"></a>
-<span class="sourceLineNo">2069</span>  void decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload) throws IOException;<a name="line.2069"></a>
-<span class="sourceLineNo">2070</span><a name="line.2070"></a>
-<span class="sourceLineNo">2071</span>  /**<a name="line.2071"></a>
-<span class="sourceLineNo">2072</span>   * List region servers marked as decommissioned, which can not be assigned regions.<a name="line.2072"></a>
-<span class="sourceLineNo">2073</span>   * @return List of decommissioned region servers.<a name="line.2073"></a>
-<span class="sourceLineNo">2074</span>   * @throws IOException if a remote or network exception occurs<a name="line.2074"></a>
-<span class="sourceLineNo">2075</span>   */<a name="line.2075"></a>
-<span class="sourceLineNo">2076</span>  List&lt;ServerName&gt; listDecommissionedRegionServers() throws IOException;<a name="line.2076"></a>
-<span class="sourceLineNo">2077</span><a name="line.2077"></a>
-<span class="sourceLineNo">2078</span>  /**<a name="line.2078"></a>
-<span class="sourceLineNo">2079</span>   * Remove decommission marker from a region server to allow regions assignments.<a name="line.2079"></a>
-<span class="sourceLineNo">2080</span>   * Load regions onto the server if a list of regions is given. Region loading is<a name="line.2080"></a>
-<span class="sourceLineNo">2081</span>   * asynchronous.<a name="line.2081"></a>
-<span class="sourceLineNo">2082</span>   * @param server The server to recommission.<a name="line.2082"></a>
-<span class="sourceLineNo">2083</span>   * @param encodedRegionNames Regions to load onto the server.<a name="line.2083"></a>
-<span class="sourceLineNo">2084</span>   * @throws IOException if a remote or network exception occurs<a name="line.2084"></a>
-<span class="sourceLineNo">2085</span>   */<a name="line.2085"></a>
-<span class="sourceLineNo">2086</span>  void recommissionRegionServer(ServerName server, List&lt;byte[]&gt; encodedRegionNames)<a name="line.2086"></a>
-<span class="sourceLineNo">2087</span>      throws IOException;<a name="line.2087"></a>
-<span class="sourceLineNo">2088</span><a name="line.2088"></a>
-<span class="sourceLineNo">2089</span>  /**<a name="line.2089"></a>
-<span class="sourceLineNo">2090</span>   * Find all table and column families that are replicated from this cluster<a name="line.2090"></a>
-<span class="sourceLineNo">2091</span>   * @return the replicated table-cfs list of this cluster.<a name="line.2091"></a>
-<span class="sourceLineNo">2092</span>   * @throws IOException if a remote or network exception occurs<a name="line.2092"></a>
-<span class="sourceLineNo">2093</span>   */<a name="line.2093"></a>
-<span class="sourceLineNo">2094</span>  List&lt;TableCFs&gt; listReplicatedTableCFs() throws IOException;<a name="line.2094"></a>
-<span class="sourceLineNo">2095</span><a name="line.2095"></a>
-<span class="sourceLineNo">2096</span>  /**<a name="line.2096"></a>
-<span class="sourceLineNo">2097</span>   * Enable a table's replication switch.<a name="line.2097"></a>
-<span class="sourceLineNo">2098</span>   * @param tableName name of the table<a name="line.2098"></a>
-<span class="sourceLineNo">2099</span>   * @throws IOException if a remote or network exception occurs<a name="line.2099"></a>
-<span class="sourceLineNo">2100</span>   */<a name="line.2100"></a>
-<span class="sourceLineNo">2101</span>  void enableTableReplication(TableName tableName) throws IOException;<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span><a name="line.2102"></a>
-<span class="sourceLineNo">2103</span>  /**<a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>   * Disable a table's replication switch.<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>   * @param tableName name of the table<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>   * @throws IOException if a remote or network exception occurs<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>   */<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>  void disableTableReplication(TableName tableName) throws IOException;<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span><a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>  /**<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>   * Clear compacting queues on a regionserver.<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>   * @param serverName the region server name<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>   * @param queues the set of queue name<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>   * @throws IOException if a remote or network exception occurs<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>   * @throws InterruptedException<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>   */<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span>  void clearCompactionQueues(ServerName serverName, Set&lt;String&gt; queues)<a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>    throws IOException, InterruptedException;<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span><a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>  /**<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   * List dead region servers.<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>   * @return List of dead region servers.<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>   */<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  default List&lt;ServerName&gt; listDeadServers() throws IOException {<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span>    return getClusterMetrics(EnumSet.of(Option.DEAD_SERVERS)).getDeadServerNames();<a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  }<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span><a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>  /**<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * Clear dead region servers from master.<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param servers list of dead region servers.<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @throws IOException if a remote or network exception occurs<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @return List of servers that are not cleared<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  List&lt;ServerName&gt; clearDeadServers(List&lt;ServerName&gt; servers) throws IOException;<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span><a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>  /**<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>   * Create a new table by cloning the existent table schema.<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>   * @param tableName name of the table to be cloned<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span>   * @param newTableName name of the new table where the table will be created<a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>   * @param preserveSplits True if the splits should be preserved<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>   * @throws IOException if a remote or network exception occurs<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>   */<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>  void cloneTableSchema(TableName tableName, TableName newTableName, boolean preserveSplits)<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      throws IOException;<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span><a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>  /**<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>   * Switch the rpc throttle enable state.<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>   * @return Previous rpc throttle enabled value<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>   * @throws IOException if a remote or network exception occurs<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>   */<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span>  boolean switchRpcThrottle(boolean enable) throws IOException;<a name="line.2152"></a>
-<span class="sourceLineNo">2153</span><a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>  /**<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   * Get if the rpc throttle is enabled.<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>   * @return True if rpc throttle is enabled<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>   * @throws IOException if a remote or network exception occurs<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
-<span class="sourceLineNo">2159</span>  boolean isRpcThrottleEnabled() throws IOException;<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span><a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>  /**<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>   * Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span>   * can be exceeded if region server has availble quota.<a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>   * @return Previous exceed throttle enabled value<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>   * @throws IOException if a remote or network exception occurs<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>   */<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>  boolean exceedThrottleQuotaSwitch(final boolean enable) throws IOException;<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span><a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>  /**<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>   * Fetches the table sizes on the filesystem as tracked by the HBase Master.<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>   * @throws IOException if a remote or network exception occurs<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>   */<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>  Map&lt;TableName, Long&gt; getSpaceQuotaTableSizes() throws IOException;<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span><a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>  /**<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>   * Fetches the observed {@link SpaceQuotaSnapshotView}s observed by a RegionServer.<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>   * @throws IOException if a remote or network exception occurs<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>   */<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span>  Map&lt;TableName, ? extends SpaceQuotaSnapshotView&gt; getRegionServerSpaceQuotaSnapshots(<a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>      ServerName serverName) throws IOException;<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span><a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>  /**<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>   * Returns the Master's view of a quota on the given {@code namespace} or null if the Master has<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>   * no quota information on that namespace.<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>   * @throws IOException if a remote or network exception occurs<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span>   */<a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  SpaceQuotaSnapshotView getCurrentSpaceQuotaSnapshot(String namespace) throws IOException;<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span><a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>  /**<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>   * Returns the Master's view of a quota on the given {@code tableName} or null if the Master has<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>   * no quota information on that table.<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>   * @throws IOException if a remote or network exception occurs<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>   */<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>  SpaceQuotaSnapshotView getCurrentSpaceQuotaSnapshot(TableName tableName) throws IOException;<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span><a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>  /**<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>   * Grants user specific permissions<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span>   * @param userPermission user name and the specific permission<a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>   * @param mergeExistingPermissions If set to false, later granted permissions will override<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>   *          previous granted permissions. otherwise, it'll merge with previous granted<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>   *          permissions.<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span>   * @throws IOException if a remote or network exception occurs<a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>   */<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  void grant(UserPermission userPermission, boolean mergeExistingPermissions) throws IOException;<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span><a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  /**<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span>   * Revokes user specific permissions<a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>   * @param userPermission user name and the specific permission<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * @throws IOException if a remote or network exception occurs<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   */<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>  void revoke(UserPermission userPermission) throws IOException;<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span><a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  /**<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>   * Get the global/namespace/table permissions for user<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>   * @param getUserPermissionsRequest A request contains which user, global, namespace or table<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>   *          permissions needed<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>   * @return The user and permission list<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>   * @throws IOException if a remote or network exception occurs<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>   */<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>  List&lt;UserPermission&gt; getUserPermissions(GetUserPermissionsRequest getUserPermissionsRequest)<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      throws IOException;<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span><a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>  /**<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>   * Check if the user has specific permissions<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>   * @param userName the user name<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>   * @param permissions the specific permission list<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>   * @return True if user has the specific permissions<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>   * @throws IOException if a remote or network exception occurs<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>   */<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>  List&lt;Boolean&gt; hasUserPermissions(String userName, List&lt;Permission&gt; permissions)<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>      throws IOException;<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span><a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>  /**<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>   * Check if call user has specific permissions<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>   * @param permissions the specific permission list<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>   * @return True if user has the specific permissions<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>   * @throws IOException if a remote or network exception occurs<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>   */<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>  default List&lt;Boolean&gt; hasUserPermissions(List&lt;Permission&gt; permissions) throws IOException {<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>    return hasUserPermissions(null, permissions);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>  }<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span><a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>  /**<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>   * Turn on or off the auto snapshot cleanup based on TTL.<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>   *<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>   * @param synchronous If &lt;code&gt;true&lt;/code&gt;, it waits until current snapshot cleanup is completed,<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>   *   if outstanding.<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>   * @return Previous auto snapshot cleanup value<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>   * @throws IOException if a remote or network exception occurs<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>   */<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>  boolean snapshotCleanupSwitch(final boolean on, final boolean synchronous)<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>      throws IOException;<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span><a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>  /**<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>   * Query the current state of the auto snapshot cleanup based on TTL.<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>   *<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>   * @return &lt;code&gt;true&lt;/code&gt; if the auto snapshot cleanup is enabled,<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>   *   &lt;code&gt;false&lt;/code&gt; otherwise.<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>   * @throws IOException if a remote or network exception occurs<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>   */<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>  boolean isSnapshotCleanupEnabled() throws IOException;<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>}<a name="line.2265"></a>
+<span class="sourceLineNo">1749</span>  /**<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span>   * Update the configuration and trigger an online config change<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span>   * on the regionserver.<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span>   * @param server : The server whose config needs to be updated.<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span>   * @throws IOException if a remote or network exception occurs<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span>   */<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span>  void updateConfiguration(ServerName server) throws IOException;<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span><a name="line.1756"></a>
+<span class="sourceLineNo">1757</span>  /**<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span>   * Update the configuration and trigger an online config change<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span>   * on all the regionservers.<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span>   * @throws IOException if a remote or network exception occurs<a name="line.1760"></a>
+<span class="sourceLineNo">1761</span>   */<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span>  void updateConfiguration() throws IOException;<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span><a name="line.1763"></a>
+<span class="sourceLineNo">1764</span>  /**<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span>   * Get the info port of the current master if one is available.<a name="line.1765"></a>
+<span class="sourceLineNo">1766</span>   * @return master info port<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span>   * @throws IOException if a remote or network exception occurs<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span>   */<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span>  default int getMasterInfoPort() throws IOException {<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_INFO_PORT)).getMasterInfoPort();<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span>  }<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span><a name="line.1772"></a>
+<span class="sourceLineNo">1773</span>  /**<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span>   * Return the set of supported security capabilities.<a name="line.1774"></a>
+<span class="sourceLineNo">1775</span>   * @throws IOException if a remote or network exception occurs<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span>   * @throws UnsupportedOperationException<a name="line.1776"></a>
+<span class="sourceLineNo">1777</span>   */<a name="line.1777"></a>
+<span class="sourceLineNo">1778</span>  List&lt;SecurityCapability&gt; getSecurityCapabilities() throws IOException;<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span><a name="line.1779"></a>
+<span class="sourceLineNo">1780</span>  /**<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span>   * Turn the split switch on or off.<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span>   * @param enabled enabled or not<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span>   * @param synchronous If &lt;code&gt;true&lt;/code&gt;, it waits until current split() call, if outstanding,<a name="line.1783"></a>
+<span class="sourceLineNo">1784</span>   *          to return.<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span>   * @return Previous switch value<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span>   * @throws IOException if a remote or network exception occurs<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span>   */<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span>  boolean splitSwitch(boolean enabled, boolean synchronous) throws IOException;<a name="line.1788"></a>
+<span class="sourceLineNo">1789</span><a name="line.1789"></a>
+<span class="sourceLineNo">1790</span>  /**<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span>   * Turn the merge switch on or off.<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span>   * @param enabled enabled or not<a name="line.1792"></a>
+<span class="sourceLineNo">1793</span>   * @param synchronous If &lt;code&gt;true&lt;/code&gt;, it waits until current merge() call, if outstanding,<a name="line.1793"></a>
+<span class="sourceLineNo">1794</span>   *          to return.<a name="line.1794"></a>
+<span class="sourceLineNo">1795</span>   * @return Previous switch value<a name="line.1795"></a>
+<span class="sourceLineNo">1796</span>   * @throws IOException if a remote or network exception occurs<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span>   */<a name="line.1797"></a>
+<span class="sourceLineNo">1798</span>  boolean mergeSwitch(boolean enabled, boolean synchronous) throws IOException;<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span><a name="line.1799"></a>
+<span class="sourceLineNo">1800</span>  /**<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span>   * Query the current state of the split switch.<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span>   * @return &lt;code&gt;true&lt;/code&gt; if the switch is enabled, &lt;code&gt;false&lt;/code&gt; otherwise.<a name="line.1802"></a>
+<span class="sourceLineNo">1803</span>   * @throws IOException if a remote or network exception occurs<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span>   */<a name="line.1804"></a>
+<span class="sourceLineNo">1805</span>  boolean isSplitEnabled() throws IOException;<a name="line.1805"></a>
+<span class="sourceLineNo">1806</span><a name="line.1806"></a>
+<span class="sourceLineNo">1807</span>  /**<a name="line.1807"></a>
+<span class="sourceLineNo">1808</span>   * Query the current state of the merge switch.<a name="line.1808"></a>
+<span class="sourceLineNo">1809</span>   * @return &lt;code&gt;true&lt;/code&gt; if the switch is enabled, &lt;code&gt;false&lt;/code&gt; otherwise.<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span>   * @throws IOException if a remote or network exception occurs<a name="line.1810"></a>
+<span class="sourceLineNo">1811</span>   */<a name="line.1811"></a>
+<span class="sourceLineNo">1812</span>  boolean isMergeEnabled() throws IOException;<a name="line.1812"></a>
+<span class="sourceLineNo">1813</span><a name="line.1813"></a>
+<span class="sourceLineNo">1814</span>  /**<a name="line.1814"></a>
+<span class="sourceLineNo">1815</span>   * Add a new replication peer for replicating data to slave cluster.<a name="line.1815"></a>
+<span class="sourceLineNo">1816</span>   * @param peerId a short name that identifies the peer<a name="line.1816"></a>
+<span class="sourceLineNo">1817</span>   * @param peerConfig configuration for the replication peer<a name="line.1817"></a>
+<span class="sourceLineNo">1818</span>   * @throws IOException if a remote or network exception occurs<a name="line.1818"></a>
+<span class="sourceLineNo">1819</span>   */<a name="line.1819"></a>
+<span class="sourceLineNo">1820</span>  default void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1820"></a>
+<span class="sourceLineNo">1821</span>      throws IOException {<a name="line.1821"></a>
+<span class="sourceLineNo">1822</span>    addReplicationPeer(peerId, peerConfig, true);<a name="line.1822"></a>
+<span class="sourceLineNo">1823</span>  }<a name="line.1823"></a>
+<span class="sourceLineNo">1824</span><a name="line.1824"></a>
+<span class="sourceLineNo">1825</span>  /**<a name="line.1825"></a>
+<span class="sourceLineNo">1826</span>   * Add a new replication peer for replicating data to slave cluster.<a name="line.1826"></a>
+<span class="sourceLineNo">1827</span>   * @param peerId a short name that identifies the peer<a name="line.1827"></a>
+<span class="sourceLineNo">1828</span>   * @param peerConfig configuration for the replication peer<a name="line.1828"></a>
+<span class="sourceLineNo">1829</span>   * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.1829"></a>
+<span class="sourceLineNo">1830</span>   * @throws IOException if a remote or network exception occurs<a name="line.1830"></a>
+<span class="sourceLineNo">1831</span>   */<a name="line.1831"></a>
+<span class="sourceLineNo">1832</span>  default void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)<a name="line.1832"></a>
+<span class="sourceLineNo">1833</span>      throws IOException {<a name="line.1833"></a>
+<span class="sourceLineNo">1834</span>    get(addReplicationPeerAsync(peerId, peerConfig, enabled), getSyncWaitTimeout(),<a name="line.1834"></a>
+<span class="sourceLineNo">1835</span>      TimeUnit.MILLISECONDS);<a name="line.1835"></a>
+<span class="sourceLineNo">1836</span>  }<a name="line.1836"></a>
+<span class="sourceLineNo">1837</span><a name="line.1837"></a>
+<span class="sourceLineNo">1838</span>  /**<a name="line.1838"></a>
+<span class="sourceLineNo">1839</span>   * Add a new replication peer but does not block and wait for it.<a name="line.1839"></a>
+<span class="sourceLineNo">1840</span>   * &lt;p/&gt;<a name="line.1840"></a>
+<span class="sourceLineNo">1841</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1841"></a>
+<span class="sourceLineNo">1842</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1842"></a>
+<span class="sourceLineNo">1843</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1843"></a>
+<span class="sourceLineNo">1844</span>   * @param peerId a short name that identifies the peer<a name="line.1844"></a>
+<span class="sourceLineNo">1845</span>   * @param peerConfig configuration for the replication peer<a name="line.1845"></a>
+<span class="sourceLineNo">1846</span>   * @return the result of the async operation<a name="line.1846"></a>
+<span class="sourceLineNo">1847</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1847"></a>
+<span class="sourceLineNo">1848</span>   */<a name="line.1848"></a>
+<span class="sourceLineNo">1849</span>  default Future&lt;Void&gt; addReplicationPeerAsync(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1849"></a>
+<span class="sourceLineNo">1850</span>      throws IOException {<a name="line.1850"></a>
+<span class="sourceLineNo">1851</span>    return addReplicationPeerAsync(peerId, peerConfig, true);<a name="line.1851"></a>
+<span class="sourceLineNo">1852</span>  }<a name="line.1852"></a>
+<span class="sourceLineNo">1853</span><a name="line.1853"></a>
+<span class="sourceLineNo">1854</span>  /**<a name="line.1854"></a>
+<span class="sourceLineNo">1855</span>   * Add a new replication peer but does not block and wait for it.<a name="line.1855"></a>
+<span class="sourceLineNo">1856</span>   * &lt;p&gt;<a name="line.1856"></a>
+<span class="sourceLineNo">1857</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1857"></a>
+<span class="sourceLineNo">1858</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1858"></a>
+<span class="sourceLineNo">1859</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1859"></a>
+<span class="sourceLineNo">1860</span>   * @param peerId a short name that identifies the peer<a name="line.1860"></a>
+<span class="sourceLineNo">1861</span>   * @param peerConfig configuration for the replication peer<a name="line.1861"></a>
+<span class="sourceLineNo">1862</span>   * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.1862"></a>
+<span class="sourceLineNo">1863</span>   * @return the result of the async operation<a name="line.1863"></a>
+<span class="sourceLineNo">1864</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1864"></a>
+<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
+<span class="sourceLineNo">1866</span>  Future&lt;Void&gt; addReplicationPeerAsync(String peerId, ReplicationPeerConfig peerConfig,<a name="line.1866"></a>
+<span class="sourceLineNo">1867</span>      boolean enabled) throws IOException;<a name="line.1867"></a>
+<span class="sourceLineNo">1868</span><a name="line.1868"></a>
+<span class="sourceLineNo">1869</span>  /**<a name="line.1869"></a>
+<span class="sourceLineNo">1870</span>   * Remove a peer and stop the replication.<a name="line.1870"></a>
+<span class="sourceLineNo">1871</span>   * @param peerId a short name that identifies the peer<a name="line.1871"></a>
+<span class="sourceLineNo">1872</span>   * @throws IOException if a remote or network exception occurs<a name="line.1872"></a>
+<span class="sourceLineNo">1873</span>   */<a name="line.1873"></a>
+<span class="sourceLineNo">1874</span>  default void removeReplicationPeer(String peerId) throws IOException {<a name="line.1874"></a>
+<span class="sourceLineNo">1875</span>    get(removeReplicationPeerAsync(peerId), getSyncWaitTimeout(),<a name="line.1875"></a>
+<span class="sourceLineNo">1876</span>      TimeUnit.MILLISECONDS);<a name="line.1876"></a>
+<span class="sourceLineNo">1877</span>  }<a name="line.1877"></a>
+<span class="sourceLineNo">1878</span><a name="line.1878"></a>
+<span class="sourceLineNo">1879</span>  /**<a name="line.1879"></a>
+<span class="sourceLineNo">1880</span>   * Remove a replication peer but does not block and wait for it.<a name="line.1880"></a>
+<span class="sourceLineNo">1881</span>   * &lt;p&gt;<a name="line.1881"></a>
+<span class="sourceLineNo">1882</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1882"></a>
+<span class="sourceLineNo">1883</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1883"></a>
+<span class="sourceLineNo">1884</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1884"></a>
+<span class="sourceLineNo">1885</span>   * @param peerId a short name that identifies the peer<a name="line.1885"></a>
+<span class="sourceLineNo">1886</span>   * @return the result of the async operation<a name="line.1886"></a>
+<span class="sourceLineNo">1887</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1887"></a>
+<span class="sourceLineNo">1888</span>   */<a name="line.1888"></a>
+<span class="sourceLineNo">1889</span>  Future&lt;Void&gt; removeReplicationPeerAsync(String peerId) throws IOException;<a name="line.1889"></a>
+<span class="sourceLineNo">1890</span><a name="line.1890"></a>
+<span class="sourceLineNo">1891</span>  /**<a name="line.1891"></a>
+<span class="sourceLineNo">1892</span>   * Restart the replication stream to the specified peer.<a name="line.1892"></a>
+<span class="sourceLineNo">1893</span>   * @param peerId a short name that identifies the peer<a name="line.1893"></a>
+<span class="sourceLineNo">1894</span>   * @throws IOException if a remote or network exception occurs<a name="line.1894"></a>
+<span class="sourceLineNo">1895</span>   */<a name="line.1895"></a>
+<span class="sourceLineNo">1896</span>  default void enableReplicationPeer(String peerId) throws IOException {<a name="line.1896"></a>
+<span class="sourceLineNo">1897</span>    get(enableReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1897"></a>
+<span class="sourceLineNo">1898</span>  }<a name="line.1898"></a>
+<span class="sourceLineNo">1899</span><a name="line.1899"></a>
+<span class="sourceLineNo">1900</span>  /**<a name="line.1900"></a>
+<span class="sourceLineNo">1901</span>   * Enable a replication peer but does not block and wait for it.<a name="line.1901"></a>
+<span class="sourceLineNo">1902</span>   * &lt;p&gt;<a name="line.1902"></a>
+<span class="sourceLineNo">1903</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1903"></a>
+<span class="sourceLineNo">1904</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1904"></a>
+<span class="sourceLineNo">1905</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1905"></a>
+<span class="sourceLineNo">1906</span>   * @param peerId a short name that identifies the peer<a name="line.1906"></a>
+<span class="sourceLineNo">1907</span>   * @return the result of the async operation<a name="line.1907"></a>
+<span class="sourceLineNo">1908</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1908"></a>
+<span class="sourceLineNo">1909</span>   */<a name="line.1909"></a>
+<span class="sourceLineNo">1910</span>  Future&lt;Void&gt; enableReplicationPeerAsync(String peerId) throws IOException;<a name="line.1910"></a>
+<span class="sourceLineNo">1911</span><a name="line.1911"></a>
+<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
+<span class="sourceLineNo">1913</span>   * Stop the replication stream to the specified peer.<a name="line.1913"></a>
+<span class="sourceLineNo">1914</span>   * @param peerId a short name that identifies the peer<a name="line.1914"></a>
+<span class="sourceLineNo">1915</span>   * @throws IOException if a remote or network exception occurs<a name="line.1915"></a>
+<span class="sourceLineNo">1916</span>   */<a name="line.1916"></a>
+<span class="sourceLineNo">1917</span>  default void disableReplicationPeer(String peerId) throws IOException {<a name="line.1917"></a>
+<span class="sourceLineNo">1918</span>    get(disableReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);<a name="line.1918"></a>
+<span class="sourceLineNo">1919</span>  }<a name="line.1919"></a>
+<span class="sourceLineNo">1920</span><a name="line.1920"></a>
+<span class="sourceLineNo">1921</span>  /**<a name="line.1921"></a>
+<span class="sourceLineNo">1922</span>   * Disable a replication peer but does not block and wait for it.<a name="line.1922"></a>
+<span class="sourceLineNo">1923</span>   * &lt;p/&gt;<a name="line.1923"></a>
+<span class="sourceLineNo">1924</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1924"></a>
+<span class="sourceLineNo">1925</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1925"></a>
+<span class="sourceLineNo">1926</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1926"></a>
+<span class="sourceLineNo">1927</span>   * @param peerId a short name that identifies the peer<a name="line.1927"></a>
+<span class="sourceLineNo">1928</span>   * @return the result of the async operation<a name="line.1928"></a>
+<span class="sourceLineNo">1929</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1929"></a>
+<span class="sourceLineNo">1930</span>   */<a name="line.1930"></a>
+<span class="sourceLineNo">1931</span>  Future&lt;Void&gt; disableReplicationPeerAsync(String peerId) throws IOException;<a name="line.1931"></a>
+<span class="sourceLineNo">1932</span><a name="line.1932"></a>
+<span class="sourceLineNo">1933</span>  /**<a name="line.1933"></a>
+<span class="sourceLineNo">1934</span>   * Returns the configured ReplicationPeerConfig for the specified peer.<a name="line.1934"></a>
+<span class="sourceLineNo">1935</span>   * @param peerId a short name that identifies the peer<a name="line.1935"></a>
+<span class="sourceLineNo">1936</span>   * @return ReplicationPeerConfig for the peer<a name="line.1936"></a>
+<span class="sourceLineNo">1937</span>   * @throws IOException if a remote or network exception occurs<a name="line.1937"></a>
+<span class="sourceLineNo">1938</span>   */<a name="line.1938"></a>
+<span class="sourceLineNo">1939</span>  ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws IOException;<a name="line.1939"></a>
+<span class="sourceLineNo">1940</span><a name="line.1940"></a>
+<span class="sourceLineNo">1941</span>  /**<a name="line.1941"></a>
+<span class="sourceLineNo">1942</span>   * Update the peerConfig for the specified peer.<a name="line.1942"></a>
+<span class="sourceLineNo">1943</span>   * @param peerId a short name that identifies the peer<a name="line.1943"></a>
+<span class="sourceLineNo">1944</span>   * @param peerConfig new config for the replication peer<a name="line.1944"></a>
+<span class="sourceLineNo">1945</span>   * @throws IOException if a remote or network exception occurs<a name="line.1945"></a>
+<span class="sourceLineNo">1946</span>   */<a name="line.1946"></a>
+<span class="sourceLineNo">1947</span>  default void updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1947"></a>
+<span class="sourceLineNo">1948</span>      throws IOException {<a name="line.1948"></a>
+<span class="sourceLineNo">1949</span>    get(updateReplicationPeerConfigAsync(peerId, peerConfig), getSyncWaitTimeout(),<a name="line.1949"></a>
+<span class="sourceLineNo">1950</span>      TimeUnit.MILLISECONDS);<a name="line.1950"></a>
+<span class="sourceLineNo">1951</span>  }<a name="line.1951"></a>
+<span class="sourceLineNo">1952</span><a name="line.1952"></a>
+<span class="sourceLineNo">1953</span>  /**<a name="line.1953"></a>
+<span class="sourceLineNo">1954</span>   * Update the peerConfig for the specified peer but does not block and wait for it.<a name="line.1954"></a>
+<span class="sourceLineNo">1955</span>   * &lt;p/&gt;<a name="line.1955"></a>
+<span class="sourceLineNo">1956</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.1956"></a>
+<span class="sourceLineNo">1957</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.1957"></a>
+<span class="sourceLineNo">1958</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.1958"></a>
+<span class="sourceLineNo">1959</span>   * @param peerId a short name that identifies the peer<a name="line.1959"></a>
+<span class="sourceLineNo">1960</span>   * @param peerConfig new config for the replication peer<a name="line.1960"></a>
+<span class="sourceLineNo">1961</span>   * @return the result of the async operation<a name="line.1961"></a>
+<span class="sourceLineNo">1962</span>   * @throws IOException IOException if a remote or network exception occurs<a name="line.1962"></a>
+<span class="sourceLineNo">1963</span>   */<a name="line.1963"></a>
+<span class="sourceLineNo">1964</span>  Future&lt;Void&gt; updateReplicationPeerConfigAsync(String peerId, ReplicationPeerConfig peerConfig)<a name="line.1964"></a>
+<span class="sourceLineNo">1965</span>      throws IOException;<a name="line.1965"></a>
+<span class="sourceLineNo">1966</span><a name="line.1966"></a>
+<span class="sourceLineNo">1967</span>  /**<a name="line.1967"></a>
+<span class="sourceLineNo">1968</span>   * Append the replicable table column family config from the specified peer.<a name="line.1968"></a>
+<span class="sourceLineNo">1969</span>   * @param id a short that identifies the cluster<a name="line.1969"></a>
+<span class="sourceLineNo">1970</span>   * @param tableCfs A map from tableName to column family names<a name="line.1970"></a>
+<span class="sourceLineNo">1971</span>   * @throws ReplicationException if tableCfs has conflict with existing config<a name="line.1971"></a>
+<span class="sourceLineNo">1972</span>   * @throws IOException if a remote or network exception occurs<a name="line.1972"></a>
+<span class="sourceLineNo">1973</span>   */<a name="line.1973"></a>
+<span class="sourceLineNo">1974</span>  default void appendReplicationPeerTableCFs(String id, Map&lt;TableName, List&lt;String&gt;&gt; tableCfs)<a name="line.1974"></a>
+<span class="sourceLineNo">1975</span>      throws ReplicationException, IOException {<a name="line.1975"></a>
+<span class="sourceLineNo">1976</span>    if (tableCfs == null) {<a name="line.1976"></a>
+<span class="sourceLineNo">1977</span>      throw new ReplicationException("tableCfs is null");<a name="line.1977"></a>
+<span class="sourceLineNo">1978</span>    }<a name="line.1978"></a>
+<span class="sourceLineNo">1979</span>    ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);<a name="line.1979"></a>
+<span class="sourceLineNo">1980</span>    ReplicationPeerConfig newPeerConfig =<a name="line.1980"></a>
+<span class="sourceLineNo">1981</span>      ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, peerConfig);<a name="line.1981"></a>
+<span class="sourceLineNo">1982</span>    updateReplicationPeerConfig(id, newPeerConfig);<a name="line.1982"></a>
+<span class="sourceLineNo">1983</span>  }<a name="line.1983"></a>
+<span class="sourceLineNo">1984</span><a name="line.1984"></a>
+<span class="sourceLineNo">1985</span>  /**<a name="line.1985"></a>
+<span class="sourceLineNo">1986</span>   * Remove some table-cfs from config of the specified peer.<a name="line.1986"></a>
+<span class="sourceLineNo">1987</span>   * @param id a short name that identifies the cluster<a name="line.1987"></a>
+<span class="sourceLineNo">1988</span>   * @param tableCfs A map from tableName to column family names<a name="line.1988"></a>
+<span class="sourceLineNo">1989</span>   * @throws ReplicationException if tableCfs has conflict with existing config<a name="line.1989"></a>
+<span class="sourceLineNo">1990</span>   * @throws IOException if a remote or network exception occurs<a name="line.1990"></a>
+<span class="sourceLineNo">1991</span>   */<a name="line.1991"></a>
+<span class="sourceLineNo">1992</span>  default void removeReplicationPeerTableCFs(String id, Map&lt;TableName, List&lt;String&gt;&gt; tableCfs)<a name="line.1992"></a>
+<span class="sourceLineNo">1993</span>      throws ReplicationException, IOException {<a name="line.1993"></a>
+<span class="sourceLineNo">1994</span>    if (tableCfs == null) {<a name="line.1994"></a>
+<span class="sourceLineNo">1995</span>      throw new ReplicationException("tableCfs is null");<a name="line.1995"></a>
+<span class="sourceLineNo">1996</span>    }<a name="line.1996"></a>
+<span class="sourceLineNo">1997</span>    ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);<a name="line.1997"></a>
+<span class="sourceLineNo">1998</span>    ReplicationPeerConfig newPeerConfig =<a name="line.1998"></a>
+<span class="sourceLineNo">1999</span>      ReplicationPeerConfigUtil.removeTableCFsFromReplicationPeerConfig(tableCfs, peerConfig, id);<a name="line.1999"></a>
+<span class="sourceLineNo">2000</span>    updateReplicationPeerConfig(id, newPeerConfig);<a name="line.2000"></a>
+<span class="sourceLineNo">2001</span>  }<a name="line.2001"></a>
+<span class="sourceLineNo">2002</span><a name="line.2002"></a>
+<span class="sourceLineNo">2003</span>  /**<a name="line.2003"></a>
+<span class="sourceLineNo">2004</span>   * Return a list of replication peers.<a name="line.2004"></a>
+<span class="sourceLineNo">2005</span>   * @return a list of replication peers description<a name="line.2005"></a>
+<span class="sourceLineNo">2006</span>   * @throws IOException if a remote or network exception occurs<a name="line.2006"></a>
+<span class="sourceLineNo">2007</span>   */<a name="line.2007"></a>
+<span class="sourceLineNo">2008</span>  List&lt;ReplicationPeerDescription&gt; listReplicationPeers() throws IOException;<a name="line.2008"></a>
+<span class="sourceLineNo">2009</span><a name="line.2009"></a>
+<span class="sourceLineNo">2010</span>  /**<a name="line.2010"></a>
+<span class="sourceLineNo">2011</span>   * Return a list of replication peers.<a name="line.2011"></a>
+<span class="sourceLineNo">2012</span>   * @param pattern The compiled regular expression to match peer id<a name="line.2012"></a>
+<span class="sourceLineNo">2013</span>   * @return a list of replication peers description<a name="line.2013"></a>
+<span class="sourceLineNo">2014</span>   * @throws IOException if a remote or network exception occurs<a name="line.2014"></a>
+<span class="sourceLineNo">2015</span>   */<a name="line.2015"></a>
+<span class="sourceLineNo">2016</span>  List&lt;ReplicationPeerDescription&gt; listReplicationPeers(Pattern pattern) throws IOException;<a name="line.2016"></a>
+<span class="sourceLineNo">2017</span><a name="line.2017"></a>
+<span class="sourceLineNo">2018</span>  /**<a name="line.2018"></a>
+<span class="sourceLineNo">2019</span>   * Transit current cluster to a new state in a synchronous replication peer.<a name="line.2019"></a>
+<span class="sourceLineNo">2020</span>   * @param peerId a short name that identifies the peer<a name="line.2020"></a>
+<span class="sourceLineNo">2021</span>   * @param state a new state of current cluster<a name="line.2021"></a>
+<span class="sourceLineNo">2022</span>   * @throws IOException if a remote or network exception occurs<a name="line.2022"></a>
+<span class="sourceLineNo">2023</span>   */<a name="line.2023"></a>
+<span class="sourceLineNo">2024</span>  default void transitReplicationPeerSyncReplicationState(String peerId, SyncReplicationState state)<a name="line.2024"></a>
+<span class="sourceLineNo">2025</span>      throws IOException {<a name="line.2025"></a>
+<span class="sourceLineNo">2026</span>    get(transitReplicationPeerSyncReplicationStateAsync(peerId, state), getSyncWaitTimeout(),<a name="line.2026"></a>
+<span class="sourceLineNo">2027</span>      TimeUnit.MILLISECONDS);<a name="line.2027"></a>
+<span class="sourceLineNo">2028</span>  }<a name="line.2028"></a>
+<span class="sourceLineNo">2029</span><a name="line.2029"></a>
+<span class="sourceLineNo">2030</span>  /**<a name="line.2030"></a>
+<span class="sourceLineNo">2031</span>   * Transit current cluster to a new state in a synchronous replication peer. But does not block<a name="line.2031"></a>
+<span class="sourceLineNo">2032</span>   * and wait for it.<a name="line.2032"></a>
+<span class="sourceLineNo">2033</span>   * &lt;p&gt;<a name="line.2033"></a>
+<span class="sourceLineNo">2034</span>   * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw<a name="line.2034"></a>
+<span class="sourceLineNo">2035</span>   * ExecutionException if there was an error while executing the operation or TimeoutException in<a name="line.2035"></a>
+<span class="sourceLineNo">2036</span>   * case the wait timeout was not long enough to allow the operation to complete.<a name="line.2036"></a>
+<span class="sourceLineNo">2037</span>   * @param peerId a short name that identifies the peer<a name="line.2037"></a>
+<span class="sourceLineNo">2038</span>   * @param state a new state of current cluster<a name="line.2038"></a>
+<span class="sourceLineNo">2039</span>   * @throws IOException if a remote or network exception occurs<a name="line.2039"></a>
+<span class="sourceLineNo">2040</span>   */<a name="line.2040"></a>
+<span class="sourceLineNo">2041</span>  Future&lt;Void&gt; transitReplicationPeerSyncReplicationStateAsync(String peerId,<a name="line.2041"></a>
+<span class="sourceLineNo">2042</span>      SyncReplicationState state) throws IOException;<a name="line.2042"></a>
+<span class="sourceLineNo">2043</span><a name="line.2043"></a>
+<span class="sourceLineNo">2044</span>  /**<a name="line.2044"></a>
+<span class="sourceLineNo">2045</span>   * Get the current cluster state in a synchronous replication peer.<a name="line.2045"></a>
+<span class="sourceLineNo">2046</span>   * @param peerId a short name that identifies the peer<a name="line.2046"></a>
+<span class="sourceLineNo">2047</span>   * @return the current cluster state<a name="line.2047"></a>
+<span class="sourceLineNo">2048</span>   * @throws IOException if a remote or network exception occurs<a name="line.2048"></a>
+<span class="sourceLineNo">2049</span>   */<a name="line.2049"></a>
+<span class="sourceLineNo">2050</span>  default SyncReplicationState getReplicationPeerSyncReplicationState(String peerId)<a name="line.2050"></a>
+<span class="sourceLineNo">2051</span>      throws IOException {<a name="line.2051"></a>
+<span class="sourceLineNo">2052</span>    List&lt;ReplicationPeerDescription&gt; peers = listReplicationPeers(Pattern.compile(peerId));<a name="line.2052"></a>
+<span class="sourceLineNo">2053</span>    if (peers.isEmpty() || !peers.get(0).getPeerId().equals(peerId)) {<a name="line.2053"></a>
+<span class="sourceLineNo">2054</span>      throw new IOException("Replication peer " + peerId + " does not exist");<a name="line.2054"></a>
+<span class="sourceLineNo">2055</span>    }<a name="line.2055"></a>
+<span class="sourceLineNo">2056</span>    return peers.get(0).getSyncReplicationState();<a name="line.2056"></a>
+<span class="sourceLineNo">2057</span>  }<a name="line.2057"></a>
+<span class="sourceLineNo">2058</span><a name="line.2058"></a>
+<span class="sourceLineNo">2059</span>  /**<a name="line.2059"></a>
+<span class="sourceLineNo">2060</span>   * Mark region server(s) as decommissioned to prevent additional regions from getting<a name="line.2060"></a>
+<span class="sourceLineNo">2061</span>   * assigned to them. Optionally unload the regions on the servers. If there are multiple servers<a name="line.2061"></a>
+<span class="sourceLineNo">2062</span>   * to be decommissioned, decommissioning them at the same time can prevent wasteful region<a name="line.2062"></a>
+<span class="sourceLineNo">2063</span>   * movements. Region unloading is asynchronous.<a name="line.2063"></a>
+<span class="sourceLineNo">2064</span>   * @param servers The list of servers to decommission.<a name="line.2064"></a>
+<span class="sourceLineNo">2065</span>   * @param offload True to offload the regions from the decommissioned servers<a name="line.2065"></a>
+<span class="sourceLineNo">2066</span>   * @throws IOException if a remote or network exception occurs<a name="line.2066"></a>
+<span class="sourceLineNo">2067</span>   */<a name="line.2067"></a>
+<span class="sourceLineNo">2068</span>  void decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload) throws IOException;<a name="line.2068"></a>
+<span class="sourceLineNo">2069</span><a name="line.2069"></a>
+<span class="sourceLineNo">2070</span>  /**<a name="line.2070"></a>
+<span class="sourceLineNo">2071</span>   * List region servers marked as decommissioned, which can not be assigned regions.<a name="line.2071"></a>
+<span class="sourceLineNo">2072</span>   * @return List of decommissioned region servers.<a name="line.2072"></a>
+<span class="sourceLineNo">2073</span>   * @throws IOException if a remote or network exception occurs<a name="line.2073"></a>
+<span class="sourceLineNo">2074</span>   */<a name="line.2074"></a>
+<span class="sourceLineNo">2075</span>  List&lt;ServerName&gt; listDecommissionedRegionServers() throws IOException;<a name="line.2075"></a>
+<span class="sourceLineNo">2076</span><a name="line.2076"></a>
+<span class="sourceLineNo">2077</span>  /**<a name="line.2077"></a>
+<span class="sourceLineNo">2078</span>   * Remove decommission marker from a region server to allow regions assignments.<a name="line.2078"></a>
+<span class="sourceLineNo">2079</span>   * Load regions onto the server if a list of regions is given. Region loading is<a name="line.2079"></a>
+<span class="sourceLineNo">2080</span>   * asynchronous.<a name="line.2080"></a>
+<span class="sourceLineNo">2081</span>   * @param server The server to recommission.<a name="line.2081"></a>
+<span class="sourceLineNo">2082</span>   * @param encodedRegionNames Regions to load onto the server.<a name="line.2082"></a>
+<span class="sourceLineNo">2083</span>   * @throws IOException if a remote or network exception occurs<a name="line.2083"></a>
+<span class="sourceLineNo">2084</span>   */<a name="line.2084"></a>
+<span class="sourceLineNo">2085</span>  void recommissionRegionServer(ServerName server, List&lt;byte[]&gt; encodedRegionNames)<a name="line.2085"></a>
+<span class="sourceLineNo">2086</span>      throws IOException;<a name="line.2086"></a>
+<span class="sourceLineNo">2087</span><a name="line.2087"></a>
+<span class="sourceLineNo">2088</span>  /**<a name="line.2088"></a>
+<span class="sourceLineNo">2089</span>   * Find all table and column families that are replicated from this cluster<a name="line.2089"></a>
+<span class="sourceLineNo">2090</span>   * @return the replicated table-cfs list of this cluster.<a name="line.2090"></a>
+<span class="sourceLineNo">2091</span>   * @throws IOException if a remote or network exception occurs<a name="line.2091"></a>
+<span class="sourceLineNo">2092</span>   */<a name="line.2092"></a>
+<span class="sourceLineNo">2093</span>  List&lt;TableCFs&gt; listReplicatedTableCFs() throws IOException;<a name="line.2093"></a>
+<span class="sourceLineNo">2094</span><a name="line.2094"></a>
+<span class="sourceLineNo">2095</span>  /**<a name="line.2095"></a>
+<span class="sourceLineNo">2096</span>   * Enable a table's replication switch.<a name="line.2096"></a>
+<span class="sourceLineNo">2097</span>   * @param tableName name of the table<a name="line.2097"></a>
+<span class="sourceLineNo">2098</span>   * @throws IOException if a remote or network exception occurs<a name="line.2098"></a>
+<span class="sourceLineNo">2099</span>   */<a name="line.2099"></a>
+<span class="sourceLineNo">2100</span>  void enableTableReplication(TableName tableName) throws IOException;<a name="line.2100"></a>
+<span class="sourceLineNo">2101</span><a name="line.2101"></a>
+<span class="sourceLineNo">2102</span>  /**<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>   * Disable a table's replication switch.<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>   * @param tableName name of the table<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>   * @throws IOException if a remote or network exception occurs<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span>   */<a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  void disableTableReplication(TableName tableName) throws IOException;<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span><a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>  /**<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>   * Clear compacting queues on a regionserver.<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>   * @param serverName the region server name<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>   * @param queues the set of queue name<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>   * @throws IOException if a remote or network exception occurs<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>   * @throws InterruptedException<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>   */<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>  void clearCompactionQueues(ServerName serverName, Set&lt;String&gt; queues)<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>    throws IOException, InterruptedException;<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span><a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  /**<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span>   * List dead region servers.<a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>   * @return List of dead region servers.<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   */<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>  default List&lt;ServerName&gt; listDeadServers() throws IOException {<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>    return getClusterMetrics(EnumSet.of(Option.DEAD_SERVERS)).getDeadServerNames();<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  }<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span><a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  /**<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span>   * Clear dead region servers from master.<a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>   * @param servers list of dead region servers.<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * @throws IOException if a remote or network exception occurs<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   * @return List of servers that are not cleared<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   */<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>  List&lt;ServerName&gt; clearDeadServers(List&lt;ServerName&gt; servers) throws IOException;<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span><a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>  /**<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   * Create a new table by cloning the existent table schema.<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>   * @param tableName name of the table to be cloned<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>   * @param newTableName name of the new table where the table will be created<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>   * @param preserveSplits True if the splits should be preserved<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>   * @throws IOException if a remote or network exception occurs<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>   */<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span>  void cloneTableSchema(TableName tableName, TableName newTableName, boolean preserveSplits)<a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>      throws IOException;<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span><a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>  /**<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>   * Switch the rpc throttle enable state.<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>   * @return Previous rpc throttle enabled value<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>   * @throws IOException if a remote or network exception occurs<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>   */<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span>  boolean switchRpcThrottle(boolean enable) throws IOException;<a name="line.2151"></a>
+<span class="sourceLineNo">2152</span><a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>  /**<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>   * Get if the rpc throttle is enabled.<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span>   * @return True if rpc throttle is enabled<a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>   * @throws IOException if a remote or network exception occurs<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   */<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>  boolean isRpcThrottleEnabled() throws IOException;<a name="line.2158"></a>
+<span class="sourceLineNo">2159</span><a name="line.2159"></a>
+<span class="sourceLineNo">2160</span>  /**<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span>   * Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota<a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>   * can be exceeded if region server has availble quota.<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>   * @return Previous exceed throttle enabled value<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>   * @throws IOException if a remote or network exception occurs<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span>   */<a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  boolean exceedThrottleQuotaSwitch(final boolean enable) throws IOException;<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span><a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  /**<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>   * Fetches the table sizes on the filesystem as tracked by the HBase Master.<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>   * @throws IOException if a remote or network exception occurs<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>   */<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>  Map&lt;TableName, Long&gt; getSpaceQuotaTableSizes() throws IOException;<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span><a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>  /**<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>   * Fetches the observed {@link SpaceQuotaSnapshotView}s observed by a RegionServer.<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>   * @throws IOException if a remote or network exception occurs<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>   */<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>  Map&lt;TableName, ? extends SpaceQuotaSnapshotView&gt; getRegionServerSpaceQuotaSnapshots(<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>      ServerName serverName) throws IOException;<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span><a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  /**<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span>   * Returns the Master's view of a quota on the given {@code namespace} or null if the Master has<a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>   * no quota information on that namespace.<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>   * @throws IOException if a remote or network exception occurs<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>   */<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>  SpaceQuotaSnapshotView getCurrentSpaceQuotaSnapshot(String namespace) throws IOException;<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span><a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  /**<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span>   * Returns the Master's view of a quota on the given {@code tableName} or null if the Master has<a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>   * no quota information on that table.<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>   * @throws IOException if a remote or network exception occurs<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>   */<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>  SpaceQuotaSnapshotView getCurrentSpaceQuotaSnapshot(TableName tableName) throws IOException;<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span><a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>  /**<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>   * Grants user specific permissions<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>   * @param userPermission user name and the specific permission<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>   * @param mergeExistingPermissions If set to false, later granted permissions will override<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>   *          previous granted permissions. otherwise, it'll merge with previous granted<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>   *          permissions.<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span>   * @throws IOException if a remote or network exception occurs<a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>   */<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>  void grant(UserPermission userPermission, boolean mergeExistingPermissions) throws IOException;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span><a name="line.2205"></a>
+<span class="sourceLineNo">2206</span>  /**<a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>   * Revokes user specific permissions<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>   * @param userPermission user name and the specific permission<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>   * @throws IOException if a remote or network exception occurs<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>   */<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span>  void revoke(UserPermission userPermission) throws IOException;<a name="line.2211"></a>
+<span class="sourceLineNo">2212</span><a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>  /**<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * Get the global/namespace/table permissions for user<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * @param getUserPermissionsRequest A request contains which user, global, namespace or table<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   *          permissions needed<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>   * @return The user and permission list<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>   * @throws IOException if a remote or network exception occurs<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>   */<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  List&lt;UserPermission&gt; getUserPermissions(GetUserPermissionsRequest getUserPermissionsRequest)<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>      throws IOException;<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span><a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>  /**<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>   * Check if the user has specific permissions<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>   * @param userName the user name<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>   * @param permissions the specific permission list<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>   * @return True if user has the specific permissions<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>   * @throws IOException if a remote or network exception occurs<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>   */<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>  List&lt;Boolean&gt; hasUserPermissions(String userName, List&lt;Permission&gt; permissions)<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      throws IOException;<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span><a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>  /**<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>   * Check if call user has specific permissions<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>   * @param permissions the specific permission list<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>   * @return True if user has the specific permissions<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>   * @throws IOException if a remote or network exception occurs<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>   */<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>  default List&lt;Boolean&gt; hasUserPermissions(List&lt;Permission&gt; permissions) throws IOException {<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>    return hasUserPermissions(null, permissions);<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>  }<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span><a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>  /**<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>   * Turn on or off the auto snapshot cleanup based on TTL.<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>   *<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>   * @param synchronous If &lt;code&gt;true&lt;/code&gt;, it waits until current snapshot cleanup is completed,<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>   *   if outstanding.<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>   * @return Previous auto snapshot cleanup value<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>   * @throws IOException if a remote or network exception occurs<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>   */<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>  boolean snapshotCleanupSwitch(final boolean on, final boolean synchronous)<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>      throws IOException;<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span><a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>  /**<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>   * Query the current state of the auto snapshot cleanup based on TTL.<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>   *<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>   * @return &lt;code&gt;true&lt;/code&gt; if the auto snapshot cleanup is enabled,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>   *   &lt;code&gt;false&lt;/code&gt; otherwise.<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>   * @throws IOException if a remote or network exception occurs<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>   */<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>  boolean isSnapshotCleanupEnabled() throws IOException;<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span><a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>}<a name="line.2264"></a>
 
 
 
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html b/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html
index 165526d..0bd76cb 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html
@@ -521,1001 +521,1000 @@
 <span class="sourceLineNo">513</span>   * @param nameOfRegionB encoded or full name of region b<a name="line.513"></a>
 <span class="sourceLineNo">514</span>   * @param forcible true if do a compulsory merge, otherwise we will only merge two adjacent<a name="line.514"></a>
 <span class="sourceLineNo">515</span>   *          regions<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   */<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  default CompletableFuture&lt;Void&gt; mergeRegions(byte[] nameOfRegionA, byte[] nameOfRegionB,<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      boolean forcible) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    return mergeRegions(Arrays.asList(nameOfRegionA, nameOfRegionB), forcible);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
-<span class="sourceLineNo">521</span><a name="line.521"></a>
-<span class="sourceLineNo">522</span>  /**<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * Merge regions.<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * &lt;p/&gt;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * You may get a {@code DoNotRetryIOException} if you pass more than two regions in but the master<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * does not support merging more than two regions. At least till 2.2.0, we still only support<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * merging two regions.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * @param nameOfRegionsToMerge encoded or full name of daughter regions<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * @param forcible true if do a compulsory merge, otherwise we will only merge two adjacent<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   *          regions<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
-<span class="sourceLineNo">532</span>  CompletableFuture&lt;Void&gt; mergeRegions(List&lt;byte[]&gt; nameOfRegionsToMerge, boolean forcible);<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>  /**<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * Split a table. The method will execute split action for each region in table.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @param tableName table to split<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   */<a name="line.537"></a>
-<span class="sourceLineNo">538</span>  CompletableFuture&lt;Void&gt; split(TableName tableName);<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>  /**<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * Split an individual region.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param regionName region to split<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   */<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName);<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>  /**<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * Split a table.<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param tableName table to split<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param splitPoint the explicit position to split on<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  CompletableFuture&lt;Void&gt; split(TableName tableName, byte[] splitPoint);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  /**<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   * Split an individual region.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * @param regionName region to split<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   * @param splitPoint the explicit position to split on. If not present, it will decide by region<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   *          server.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   */<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName, byte[] splitPoint);<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  /**<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * @param regionName Encoded or full name of region to assign.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  CompletableFuture&lt;Void&gt; assign(byte[] regionName);<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Unassign a region from current hosting regionserver. Region will then be assigned to a<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * regionserver chosen at random. Region could be reassigned back to the same server. Use<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * {@link #move(byte[], ServerName)} if you want to control the region movement.<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   * @param regionName Encoded or full name of region to unassign. Will clear any existing<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   *          RegionPlan if one found.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * @param forcible If true, force unassign (Will remove region from regions-in-transition too if<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   *          present. If results in double assignment use hbck -fix to resolve. To be used by<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   *          experts).<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   */<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  CompletableFuture&lt;Void&gt; unassign(byte[] regionName, boolean forcible);<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>  /**<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * Offline specified region from master's in-memory state. It will not attempt to reassign the<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * region as in unassign. This API can be used when a region not served by any region server and<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * still online as per Master's in memory state. If this API is incorrectly used on active region<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * then master will loose track of that region. This is a special method that should be used by<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * experts or hbck.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param regionName Encoded or full name of region to offline<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  CompletableFuture&lt;Void&gt; offline(byte[] regionName);<a name="line.586"></a>
-<span class="sourceLineNo">587</span><a name="line.587"></a>
-<span class="sourceLineNo">588</span>  /**<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * Move the region &lt;code&gt;r&lt;/code&gt; to a random server.<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param regionName Encoded or full name of region to move.<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   */<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  CompletableFuture&lt;Void&gt; move(byte[] regionName);<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Move the region &lt;code&gt;r&lt;/code&gt; to &lt;code&gt;dest&lt;/code&gt;.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param regionName Encoded or full name of region to move.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param destServerName The servername of the destination regionserver. If not present, we'll<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   *          assign to a random server. A server name is made of host, port and startcode. Here is<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   *          an example: &lt;code&gt; host187.example.com,60020,1289493121758&lt;/code&gt;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   */<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  CompletableFuture&lt;Void&gt; move(byte[] regionName, ServerName destServerName);<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Apply the new quota settings.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   * @param quota the quota settings<a name="line.605"></a>
-<span class="sourceLineNo">606</span>   */<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  CompletableFuture&lt;Void&gt; setQuota(QuotaSettings quota);<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  /**<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * List the quotas based on the filter.<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param filter the quota settings filter<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return the QuotaSetting list, which wrapped by a CompletableFuture.<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   */<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  CompletableFuture&lt;List&lt;QuotaSettings&gt;&gt; getQuota(QuotaFilter filter);<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>  /**<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * Add a new replication peer for replicating data to slave cluster<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param peerId a short name that identifies the peer<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @param peerConfig configuration for the replication slave cluster<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  default CompletableFuture&lt;Void&gt; addReplicationPeer(String peerId,<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      ReplicationPeerConfig peerConfig) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    return addReplicationPeer(peerId, peerConfig, true);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>  /**<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * Add a new replication peer for replicating data to slave cluster<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param peerId a short name that identifies the peer<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param peerConfig configuration for the replication slave cluster<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  CompletableFuture&lt;Void&gt; addReplicationPeer(String peerId,<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      ReplicationPeerConfig peerConfig, boolean enabled);<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  /**<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * Remove a peer and stop the replication<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   * @param peerId a short name that identifies the peer<a name="line.637"></a>
-<span class="sourceLineNo">638</span>   */<a name="line.638"></a>
-<span class="sourceLineNo">639</span>  CompletableFuture&lt;Void&gt; removeReplicationPeer(String peerId);<a name="line.639"></a>
-<span class="sourceLineNo">640</span><a name="line.640"></a>
-<span class="sourceLineNo">641</span>  /**<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * Restart the replication stream to the specified peer<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param peerId a short name that identifies the peer<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   */<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  CompletableFuture&lt;Void&gt; enableReplicationPeer(String peerId);<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>  /**<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * Stop the replication stream to the specified peer<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   * @param peerId a short name that identifies the peer<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   */<a name="line.650"></a>
-<span class="sourceLineNo">651</span>  CompletableFuture&lt;Void&gt; disableReplicationPeer(String peerId);<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>  /**<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * Returns the configured ReplicationPeerConfig for the specified peer<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param peerId a short name that identifies the peer<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @return ReplicationPeerConfig for the peer wrapped by a {@link CompletableFuture}.<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   */<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  CompletableFuture&lt;ReplicationPeerConfig&gt; getReplicationPeerConfig(String peerId);<a name="line.658"></a>
-<span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>  /**<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * Update the peerConfig for the specified peer<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param peerId a short name that identifies the peer<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param peerConfig new config for the peer<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   */<a name="line.664"></a>
-<span class="sourceLineNo">665</span>  CompletableFuture&lt;Void&gt; updateReplicationPeerConfig(String peerId,<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      ReplicationPeerConfig peerConfig);<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>  /**<a name="line.668"></a>
-<span class="sourceLineNo">669</span>   * Transit current cluster to a new state in a synchronous replication peer.<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   * @param peerId a short name that identifies the peer<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * @param state a new state of current cluster<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   */<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  CompletableFuture&lt;Void&gt; transitReplicationPeerSyncReplicationState(String peerId,<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      SyncReplicationState state);<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>  /**<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   * Get the current cluster state in a synchronous replication peer.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>   * @param peerId a short name that identifies the peer<a name="line.678"></a>
-<span class="sourceLineNo">679</span>   * @return the current cluster state wrapped by a {@link CompletableFuture}.<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   */<a name="line.680"></a>
-<span class="sourceLineNo">681</span>  default CompletableFuture&lt;SyncReplicationState&gt; getReplicationPeerSyncReplicationState(<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      String peerId) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    CompletableFuture&lt;SyncReplicationState&gt; future = new CompletableFuture&lt;&gt;();<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    addListener(listReplicationPeers(Pattern.compile(peerId)), (peers, error) -&gt; {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      if (error != null) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>        future.completeExceptionally(error);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      } else if (peers.isEmpty() || !peers.get(0).getPeerId().equals(peerId)) {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>        future<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          .completeExceptionally(new IOException("Replication peer " + peerId + " does not exist"));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      } else {<a name="line.690"></a>
-<span class="sourceLineNo">691</span>        future.complete(peers.get(0).getSyncReplicationState());<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      }<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    });<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    return future;<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>  /**<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * Append the replicable table-cf config of the specified peer<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param peerId a short that identifies the cluster<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param tableCfs A map from tableName to column family names<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   */<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  CompletableFuture&lt;Void&gt; appendReplicationPeerTableCFs(String peerId,<a name="line.702"></a>
-<span class="sourceLineNo">703</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs);<a name="line.703"></a>
-<span class="sourceLineNo">704</span><a name="line.704"></a>
-<span class="sourceLineNo">705</span>  /**<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Remove some table-cfs from config of the specified peer<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param peerId a short name that identifies the cluster<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param tableCfs A map from tableName to column family names<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   */<a name="line.709"></a>
-<span class="sourceLineNo">710</span>  CompletableFuture&lt;Void&gt; removeReplicationPeerTableCFs(String peerId,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs);<a name="line.711"></a>
-<span class="sourceLineNo">712</span><a name="line.712"></a>
-<span class="sourceLineNo">713</span>  /**<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * Return a list of replication peers.<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   * @return a list of replication peers description. The return value will be wrapped by a<a name="line.715"></a>
-<span class="sourceLineNo">716</span>   *         {@link CompletableFuture}.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>   */<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers();<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * Return a list of replication peers.<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   * @param pattern The compiled regular expression to match peer id<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * @return a list of replication peers description. The return value will be wrapped by a<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   *         {@link CompletableFuture}.<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   */<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers(Pattern pattern);<a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  /**<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * Find all table and column families that are replicated from this cluster<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * @return the replicated table-cfs list of this cluster. The return value will be wrapped by a<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   *         {@link CompletableFuture}.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   */<a name="line.732"></a>
-<span class="sourceLineNo">733</span>  CompletableFuture&lt;List&lt;TableCFs&gt;&gt; listReplicatedTableCFs();<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>  /**<a name="line.735"></a>
-<span class="sourceLineNo">736</span>   * Enable a table's replication switch.<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   * @param tableName name of the table<a name="line.737"></a>
-<span class="sourceLineNo">738</span>   */<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  CompletableFuture&lt;Void&gt; enableTableReplication(TableName tableName);<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>  /**<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * Disable a table's replication switch.<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @param tableName name of the table<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  CompletableFuture&lt;Void&gt; disableTableReplication(TableName tableName);<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  /**<a name="line.747"></a>
-<span class="sourceLineNo">748</span>   * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be<a name="line.748"></a>
-<span class="sourceLineNo">749</span>   * taken. If the table is disabled, an offline snapshot is taken. Snapshots are taken<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * sequentially even when requested concurrently, across all tables. Snapshots are considered<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Attempts to take a snapshot with the same<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * name (even a different type or with different parameters) will fail with a<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * @param snapshotName name of the snapshot to be created<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   * @param tableName name of the table for which snapshot is created<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   */<a name="line.758"></a>
-<span class="sourceLineNo">759</span>  default CompletableFuture&lt;Void&gt; snapshot(String snapshotName, TableName tableName) {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return snapshot(snapshotName, tableName, SnapshotType.FLUSH);<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  }<a name="line.761"></a>
-<span class="sourceLineNo">762</span><a name="line.762"></a>
-<span class="sourceLineNo">763</span>  /**<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across all<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * different parameters) will fail with a<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other<a name="line.771"></a>
-<span class="sourceLineNo">772</span>   *          snapshots stored on the cluster<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * @param tableName name of the table to snapshot<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * @param type type of snapshot to take<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  default CompletableFuture&lt;Void&gt; snapshot(String snapshotName, TableName tableName,<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      SnapshotType type) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    return snapshot(new SnapshotDescription(snapshotName, tableName, type));<a name="line.778"></a>
-<span class="sourceLineNo">779</span>  }<a name="line.779"></a>
-<span class="sourceLineNo">780</span><a name="line.780"></a>
-<span class="sourceLineNo">781</span>  /**<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   * Take a snapshot and wait for the server to complete that snapshot asynchronously. Snapshots<a name="line.782"></a>
-<span class="sourceLineNo">783</span>   * are taken sequentially even when requested concurrently, across all tables. Snapshots are<a name="line.783"></a>
-<span class="sourceLineNo">784</span>   * considered unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;.<a name="line.784"></a>
-<span class="sourceLineNo">785</span>   * Attempts to take a snapshot with the same name (even a different type or with different<a name="line.785"></a>
-<span class="sourceLineNo">786</span>   * parameters) will fail with a {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException}<a name="line.786"></a>
-<span class="sourceLineNo">787</span>   * indicating the duplicate naming. Snapshot names follow the same naming constraints as tables in<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   * HBase. See {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * You should probably use {@link #snapshot(String, org.apache.hadoop.hbase.TableName)} unless you<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * are sure about the type of snapshot that you want to take.<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param snapshot snapshot to take<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   */<a name="line.792"></a>
-<span class="sourceLineNo">793</span>  CompletableFuture&lt;Void&gt; snapshot(SnapshotDescription snapshot);<a name="line.793"></a>
-<span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>  /**<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * Check the current state of the passed snapshot. There are three possible states:<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * &lt;ol&gt;<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt;<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * &lt;li&gt;finished with error - throws the exception that caused the snapshot to fail&lt;/li&gt;<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * &lt;/ol&gt;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * The cluster only knows about the most recent snapshot. Therefore, if another snapshot has been<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * run/started since the snapshot you are checking, you will receive an<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * {@link org.apache.hadoop.hbase.snapshot.UnknownSnapshotException}.<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @param snapshot description of the snapshot to check<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the snapshot is completed, &lt;tt&gt;false&lt;/tt&gt; if the snapshot is still<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   *         running<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  CompletableFuture&lt;Boolean&gt; isSnapshotFinished(SnapshotDescription snapshot);<a name="line.809"></a>
-<span class="sourceLineNo">810</span><a name="line.810"></a>
-<span class="sourceLineNo">811</span>  /**<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If the<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to true, a<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * snapshot of the current table is taken before executing the restore operation. In case of<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   * restore failure, the failsafe snapshot will be restored. If the restore completes without<a name="line.815"></a>
-<span class="sourceLineNo">816</span>   * problem the failsafe snapshot is deleted.<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   * @param snapshotName name of the snapshot to restore<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   */<a name="line.818"></a>
-<span class="sourceLineNo">819</span>  CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName);<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>  /**<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * executing the restore operation. In case of restore failure, the failsafe snapshot will be<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * failsafe snapshot name is configurable by using the property<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * @param snapshotName name of the snapshot to restore<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   */<a name="line.830"></a>
-<span class="sourceLineNo">831</span>  default CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      boolean takeFailSafeSnapshot) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    return restoreSnapshot(snapshotName, takeFailSafeSnapshot, false);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
-<span class="sourceLineNo">835</span><a name="line.835"></a>
-<span class="sourceLineNo">836</span>  /**<a name="line.836"></a>
-<span class="sourceLineNo">837</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.837"></a>
-<span class="sourceLineNo">838</span>   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before<a name="line.838"></a>
-<span class="sourceLineNo">839</span>   * executing the restore operation. In case of restore failure, the failsafe snapshot will be<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * failsafe snapshot name is configurable by using the property<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param snapshotName name of the snapshot to restore<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to restore acl of snapshot<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   */<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot,<a name="line.847"></a>
-<span class="sourceLineNo">848</span>      boolean restoreAcl);<a name="line.848"></a>
-<span class="sourceLineNo">849</span><a name="line.849"></a>
-<span class="sourceLineNo">850</span>  /**<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * Create a new table by cloning the snapshot content.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.852"></a>
-<span class="sourceLineNo">853</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.853"></a>
-<span class="sourceLineNo">854</span>   */<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  default CompletableFuture&lt;Void&gt; cloneSnapshot(String snapshotName, TableName tableName) {<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    return cloneSnapshot(snapshotName, tableName, false);<a name="line.856"></a>
-<span class="sourceLineNo">857</span>  }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>  /**<a name="line.859"></a>
-<span class="sourceLineNo">860</span>   * Create a new table by cloning the snapshot content.<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to restore acl of snapshot<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   */<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  CompletableFuture&lt;Void&gt; cloneSnapshot(String snapshotName, TableName tableName,<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      boolean restoreAcl);<a name="line.866"></a>
-<span class="sourceLineNo">867</span><a name="line.867"></a>
-<span class="sourceLineNo">868</span>  /**<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * List completed snapshots.<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @return a list of snapshot descriptors for completed snapshots wrapped by a<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   *         {@link CompletableFuture}<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   */<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots();<a name="line.873"></a>
-<span class="sourceLineNo">874</span><a name="line.874"></a>
-<span class="sourceLineNo">875</span>  /**<a name="line.875"></a>
-<span class="sourceLineNo">876</span>   * List all the completed snapshots matching the given pattern.<a name="line.876"></a>
-<span class="sourceLineNo">877</span>   * @param pattern The compiled regular expression to match against<a name="line.877"></a>
-<span class="sourceLineNo">878</span>   * @return - returns a List of SnapshotDescription wrapped by a {@link CompletableFuture}<a name="line.878"></a>
-<span class="sourceLineNo">879</span>   */<a name="line.879"></a>
-<span class="sourceLineNo">880</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots(Pattern pattern);<a name="line.880"></a>
-<span class="sourceLineNo">881</span><a name="line.881"></a>
-<span class="sourceLineNo">882</span>  /**<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   * List all the completed snapshots matching the given table name pattern.<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.884"></a>
-<span class="sourceLineNo">885</span>   * @return - returns a List of completed SnapshotDescription wrapped by a<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   *         {@link CompletableFuture}<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   */<a name="line.887"></a>
-<span class="sourceLineNo">888</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern);<a name="line.888"></a>
-<span class="sourceLineNo">889</span><a name="line.889"></a>
-<span class="sourceLineNo">890</span>  /**<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * List all the completed snapshots matching the given table name regular expression and snapshot<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * name regular expression.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.893"></a>
-<span class="sourceLineNo">894</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.894"></a>
-<span class="sourceLineNo">895</span>   * @return - returns a List of completed SnapshotDescription wrapped by a<a name="line.895"></a>
-<span class="sourceLineNo">896</span>   *         {@link CompletableFuture}<a name="line.896"></a>
-<span class="sourceLineNo">897</span>   */<a name="line.897"></a>
-<span class="sourceLineNo">898</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern,<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      Pattern snapshotNamePattern);<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  /**<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * Delete an existing snapshot.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   * @param snapshotName name of the snapshot<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   */<a name="line.904"></a>
-<span class="sourceLineNo">905</span>  CompletableFuture&lt;Void&gt; deleteSnapshot(String snapshotName);<a name="line.905"></a>
-<span class="sourceLineNo">906</span><a name="line.906"></a>
-<span class="sourceLineNo">907</span>  /**<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * Delete all existing snapshots.<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   */<a name="line.909"></a>
-<span class="sourceLineNo">910</span>  CompletableFuture&lt;Void&gt; deleteSnapshots();<a name="line.910"></a>
-<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span>  /**<a name="line.912"></a>
-<span class="sourceLineNo">913</span>   * Delete existing snapshots whose names match the pattern passed.<a name="line.913"></a>
-<span class="sourceLineNo">914</span>   * @param pattern pattern for names of the snapshot to match<a name="line.914"></a>
-<span class="sourceLineNo">915</span>   */<a name="line.915"></a>
-<span class="sourceLineNo">916</span>  CompletableFuture&lt;Void&gt; deleteSnapshots(Pattern pattern);<a name="line.916"></a>
-<span class="sourceLineNo">917</span><a name="line.917"></a>
-<span class="sourceLineNo">918</span>  /**<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * Delete all existing snapshots matching the given table name pattern.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   */<a name="line.921"></a>
-<span class="sourceLineNo">922</span>  CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern);<a name="line.922"></a>
-<span class="sourceLineNo">923</span><a name="line.923"></a>
-<span class="sourceLineNo">924</span>  /**<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * Delete all existing snapshots matching the given table name regular expression and snapshot<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * name regular expression.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern,<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      Pattern snapshotNamePattern);<a name="line.931"></a>
-<span class="sourceLineNo">932</span><a name="line.932"></a>
-<span class="sourceLineNo">933</span>  /**<a name="line.933"></a>
-<span class="sourceLineNo">934</span>   * Execute a distributed procedure on a cluster.<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   *          root ZK node name of the procedure).<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   *          optional.<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.939"></a>
-<span class="sourceLineNo">940</span>   */<a name="line.940"></a>
-<span class="sourceLineNo">941</span>  CompletableFuture&lt;Void&gt; execProcedure(String signature, String instance,<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      Map&lt;String, String&gt; props);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Execute a distributed procedure on a cluster.<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *          root ZK node name of the procedure).<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   *          optional.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   * @return data returned after procedure execution. null if no return data.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>   */<a name="line.952"></a>
-<span class="sourceLineNo">953</span>  CompletableFuture&lt;byte[]&gt; execProcedureWithReturn(String signature, String instance,<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      Map&lt;String, String&gt; props);<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Check the current state of the specified procedure. There are three possible states:<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * &lt;ol&gt;<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt;<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * &lt;li&gt;finished with error - throws the exception that caused the procedure to fail&lt;/li&gt;<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   * &lt;/ol&gt;<a name="line.962"></a>
-<span class="sourceLineNo">963</span>   * @param signature The signature that uniquely identifies a procedure<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * @param instance The instance name of the procedure<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   * @return true if the specified procedure is finished successfully, false if it is still running.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   *         The value is wrapped by {@link CompletableFuture}<a name="line.967"></a>
-<span class="sourceLineNo">968</span>   */<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  CompletableFuture&lt;Boolean&gt; isProcedureFinished(String signature, String instance,<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      Map&lt;String, String&gt; props);<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>  /**<a name="line.972"></a>
-<span class="sourceLineNo">973</span>   * Abort a procedure<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param procId ID of the procedure to abort<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @return true if aborted, false if procedure already completed or does not exist. the value is<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   *         wrapped by {@link CompletableFuture}<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @deprecated since 2.1.1 and will be removed in 4.0.0.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21223"&gt;HBASE-21223&lt;/a&gt;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   */<a name="line.981"></a>
-<span class="sourceLineNo">982</span>  @Deprecated<a name="line.982"></a>
-<span class="sourceLineNo">983</span>  CompletableFuture&lt;Boolean&gt; abortProcedure(long procId, boolean mayInterruptIfRunning);<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>  /**<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * List procedures<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * @return procedure list JSON wrapped by {@link CompletableFuture}<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  CompletableFuture&lt;String&gt; getProcedures();<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>  /**<a name="line.991"></a>
-<span class="sourceLineNo">992</span>   * List locks.<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * @return lock list JSON wrapped by {@link CompletableFuture}<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   */<a name="line.994"></a>
-<span class="sourceLineNo">995</span>  CompletableFuture&lt;String&gt; getLocks();<a name="line.995"></a>
-<span class="sourceLineNo">996</span><a name="line.996"></a>
-<span class="sourceLineNo">997</span>  /**<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * Mark region server(s) as decommissioned to prevent additional regions from getting<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * assigned to them. Optionally unload the regions on the servers. If there are multiple servers<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   * to be decommissioned, decommissioning them at the same time can prevent wasteful region<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>   * movements. Region unloading is asynchronous.<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>   * @param servers The list of servers to decommission.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param offload True to offload the regions from the decommissioned servers<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   */<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  CompletableFuture&lt;Void&gt; decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload);<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span><a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>  /**<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * List region servers marked as decommissioned, which can not be assigned regions.<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * @return List of decommissioned region servers wrapped by {@link CompletableFuture}<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   */<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  CompletableFuture&lt;List&lt;ServerName&gt;&gt; listDecommissionedRegionServers();<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>  /**<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>   * Remove decommission marker from a region server to allow regions assignments. Load regions onto<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>   * the server if a list of regions is given. Region loading is asynchronous.<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>   * @param server The server to recommission.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   * @param encodedRegionNames Regions to load onto the server.<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   */<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  CompletableFuture&lt;Void&gt; recommissionRegionServer(ServerName server,<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      List&lt;byte[]&gt; encodedRegionNames);<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span><a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  /**<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   * @return cluster status wrapped by {@link CompletableFuture}<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>  CompletableFuture&lt;ClusterMetrics&gt; getClusterMetrics();<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span><a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>  /**<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * @return cluster status wrapped by {@link CompletableFuture}<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   */<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>  CompletableFuture&lt;ClusterMetrics&gt; getClusterMetrics(EnumSet&lt;Option&gt; options);<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span><a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>  /**<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>   * @return current master server name wrapped by {@link CompletableFuture}<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>   */<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>  default CompletableFuture&lt;ServerName&gt; getMaster() {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    return getClusterMetrics(EnumSet.of(Option.MASTER)).thenApply(ClusterMetrics::getMasterName);<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>  }<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span><a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  /**<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>   * @return current backup master list wrapped by {@link CompletableFuture}<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>   */<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>  default CompletableFuture&lt;Collection&lt;ServerName&gt;&gt; getBackupMasters() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    return getClusterMetrics(EnumSet.of(Option.BACKUP_MASTERS))<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>      .thenApply(ClusterMetrics::getBackupMasterNames);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>  }<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span><a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>  /**<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>   * @return current live region servers list wrapped by {@link CompletableFuture}<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>   */<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>  default CompletableFuture&lt;Collection&lt;ServerName&gt;&gt; getRegionServers() {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    return getClusterMetrics(EnumSet.of(Option.SERVERS_NAME))<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        .thenApply(ClusterMetrics::getServersName);<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>  }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span><a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>  /**<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>   * @return a list of master coprocessors wrapped by {@link CompletableFuture}<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>   */<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>  default CompletableFuture&lt;List&lt;String&gt;&gt; getMasterCoprocessorNames() {<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_COPROCESSORS))<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>        .thenApply(ClusterMetrics::getMasterCoprocessorNames);<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>  }<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>  /**<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>   * Get the info port of the current master if one is available.<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>   * @return master info port<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>   */<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>  default CompletableFuture&lt;Integer&gt; getMasterInfoPort() {<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_INFO_PORT)).thenApply(<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>      ClusterMetrics::getMasterInfoPort);<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  }<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span><a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>  /**<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>   * Shuts down the HBase cluster.<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>   */<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>  CompletableFuture&lt;Void&gt; shutdown();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>  /**<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>   * Shuts down the current HBase master only.<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>   */<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>  CompletableFuture&lt;Void&gt; stopMaster();<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span><a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>  /**<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>   * Stop the designated regionserver.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>   * @param serverName<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>   */<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>  CompletableFuture&lt;Void&gt; stopRegionServer(ServerName serverName);<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>  /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>   * Update the configuration and trigger an online config change on the regionserver.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>   * @param serverName : The server whose config needs to be updated.<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>   */<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>  CompletableFuture&lt;Void&gt; updateConfiguration(ServerName serverName);<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span><a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>  /**<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>   * Update the configuration and trigger an online config change on all the masters and<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>   * regionservers.<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>   */<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>  CompletableFuture&lt;Void&gt; updateConfiguration();<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span><a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>  /**<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>   * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>   * &lt;p&gt;<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>   * When the returned CompletableFuture is done, it only means the rollWALWriter request was sent<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>   * to the region server and may need some time to finish the rollWALWriter operation. As a side<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>   * effect of this call, the named region server may schedule store flushes at the request of the<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>   * wal.<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>   * @param serverName The servername of the region server.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>   */<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>  CompletableFuture&lt;Void&gt; rollWALWriter(ServerName serverName);<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span><a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>  /**<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * Clear compacting queues on a region server.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * @param serverName<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * @param queues the set of queue name<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   */<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  CompletableFuture&lt;Void&gt; clearCompactionQueues(ServerName serverName, Set&lt;String&gt; queues);<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span><a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  /**<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>   * Get a list of {@link RegionMetrics} of all regions hosted on a region seerver.<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>   * @param serverName<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   * @return a list of {@link RegionMetrics} wrapped by {@link CompletableFuture}<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>   */<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>  CompletableFuture&lt;List&lt;RegionMetrics&gt;&gt; getRegionMetrics(ServerName serverName);<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span><a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>  /**<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   * Get a list of {@link RegionMetrics} of all regions hosted on a region seerver for a table.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @param serverName<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   * @param tableName<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>   * @return a list of {@link RegionMetrics} wrapped by {@link CompletableFuture}<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>   */<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  CompletableFuture&lt;List&lt;RegionMetrics&gt;&gt; getRegionMetrics(ServerName serverName,<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    TableName tableName);<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span><a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>  /**<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>   * Check whether master is in maintenance mode<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>   * @return true if master is in maintenance mode, false otherwise. The return value will be<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>   *         wrapped by a {@link CompletableFuture}<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>   */<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  CompletableFuture&lt;Boolean&gt; isMasterInMaintenanceMode();<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span><a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>  /**<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * Get the current compaction state of a table. It could be in a major compaction, a minor<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * compaction, both, or none.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @param tableName table to examine<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * @return the current compaction state wrapped by a {@link CompletableFuture}<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   */<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>  default CompletableFuture&lt;CompactionState&gt; getCompactionState(TableName tableName) {<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>    return getCompactionState(tableName, CompactType.NORMAL);<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>  }<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span><a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>  /**<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>   * Get the current compaction state of a table. It could be in a major compaction, a minor<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>   * compaction, both, or none.<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>   * @param tableName table to examine<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>   * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>   * @return the current compaction state wrapped by a {@link CompletableFuture}<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>   */<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>  CompletableFuture&lt;CompactionState&gt; getCompactionState(TableName tableName,<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      CompactType compactType);<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span><a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>  /**<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>   * Get the current compaction state of region. It could be in a major compaction, a minor<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>   * compaction, both, or none.<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>   * @param regionName region to examine<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   * @return the current compaction state wrapped by a {@link CompletableFuture}<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>   */<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>  CompletableFuture&lt;CompactionState&gt; getCompactionStateForRegion(byte[] regionName);<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span><a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  /**<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>   * Get the timestamp of the last major compaction for the passed table.<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>   * &lt;p&gt;<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>   * The timestamp of the oldest HFile resulting from a major compaction of that table, or not<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>   * present if no such HFile could be found.<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>   * @param tableName table to examine<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>   * @return the last major compaction timestamp wrapped by a {@link CompletableFuture}<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>   */<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>  CompletableFuture&lt;Optional&lt;Long&gt;&gt; getLastMajorCompactionTimestamp(TableName tableName);<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span><a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>  /**<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   * Get the timestamp of the last major compaction for the passed region.<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>   * &lt;p&gt;<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>   * The timestamp of the oldest HFile resulting from a major compaction of that region, or not<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>   * present if no such HFile could be found.<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>   * @param regionName region to examine<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>   * @return the last major compaction timestamp wrapped by a {@link CompletableFuture}<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>   */<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>  CompletableFuture&lt;Optional&lt;Long&gt;&gt; getLastMajorCompactionTimestampForRegion(byte[] regionName);<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span><a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>  /**<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>   * @return the list of supported security capabilities. The return value will be wrapped by a<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>   *         {@link CompletableFuture}.<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>   */<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>  CompletableFuture&lt;List&lt;SecurityCapability&gt;&gt; getSecurityCapabilities();<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span><a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>  /**<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>   * Turn the load balancer on or off.<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>   * @return Previous balancer value wrapped by a {@link CompletableFuture}.<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>   */<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>  default CompletableFuture&lt;Boolean&gt; balancerSwitch(boolean on) {<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>    return balancerSwitch(on, false);<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>  }<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span><a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>  /**<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>   * Turn the load balancer on or off.<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>   * &lt;p/&gt;<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>   * Notice that, the method itself is always non-blocking, which means it will always return<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>   * immediately. The {@code drainRITs} parameter only effects when will we complete the returned<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>   * {@link CompletableFuture}.<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>   * @param drainRITs If &lt;code&gt;true&lt;/code&gt;, it waits until current balance() call, if outstanding,<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>   *          to return.<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>   * @return Previous balancer value wrapped by a {@link CompletableFuture}.<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>   */<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>  CompletableFuture&lt;Boolean&gt; balancerSwitch(boolean on, boolean drainRITs);<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span><a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>  /**<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>   * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>   * reassignments. Can NOT run for various reasons. Check logs.<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>   * @return True if balancer ran, false otherwise. The return value will be wrapped by a<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>   *         {@link CompletableFuture}.<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   */<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>  default CompletableFuture&lt;Boolean&gt; balance() {<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>    return balance(false);<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>  }<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span><a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>  /**<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>   * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>   * reassignments. If there is region in transition, force parameter of true would still run<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>   * balancer. Can *not* run for other reasons. Check logs.<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>   * @param forcible whether we should force balance even if there is region in transition.<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>   * @return True if balancer ran, false otherwise. The return value will be wrapped by a<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>   *         {@link CompletableFuture}.<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>   */<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>  CompletableFuture&lt;Boolean&gt; balance(boolean forcible);<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  /**<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>   * Query the current state of the balancer.<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>   * @return true if the balance switch is on, false otherwise. The return value will be wrapped by a<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   *         {@link CompletableFuture}.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   */<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>  CompletableFuture&lt;Boolean&gt; isBalancerEnabled();<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span><a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>  /**<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>   * Set region normalizer on/off.<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>   * @param on whether normalizer should be on or off<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>   * @return Previous normalizer value wrapped by a {@link CompletableFuture}<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>   */<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>  CompletableFuture&lt;Boolean&gt; normalizerSwitch(boolean on);<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span><a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>  /**<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>   * Query the current state of the region normalizer<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>   * @return true if region normalizer is on, false otherwise. The return value will be wrapped by a<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>   *         {@link CompletableFuture}<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>   */<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>  CompletableFuture&lt;Boolean&gt; isNormalizerEnabled();<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  /**<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>   * Invoke region normalizer. Can NOT run for various reasons. Check logs.<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>   * @return true if region normalizer ran, false otherwise. The return value will be wrapped by a<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>   *         {@link CompletableFuture}<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>   */<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>  CompletableFuture&lt;Boolean&gt; normalize();<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span><a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>  /**<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>   * Turn the cleaner chore on/off.<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * @param on<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * @return Previous cleaner state wrapped by a {@link CompletableFuture}<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   */<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>  CompletableFuture&lt;Boolean&gt; cleanerChoreSwitch(boolean on);<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span><a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>  /**<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   * Query the current state of the cleaner chore.<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>   * @return true if cleaner chore is on, false otherwise. The return value will be wrapped by<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>   *         a {@link CompletableFuture}<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>   */<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>  CompletableFuture&lt;Boolean&gt; isCleanerChoreEnabled();<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span><a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>  /**<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>   * Ask for cleaner chore to run.<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>   * @return true if cleaner chore ran, false otherwise. The return value will be wrapped by a<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>   *         {@link CompletableFuture}<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>   */<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  CompletableFuture&lt;Boolean&gt; runCleanerChore();<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span><a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>  /**<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>   * Turn the catalog janitor on/off.<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>   * @param on<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>   * @return the previous state wrapped by a {@link CompletableFuture}<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>   */<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  CompletableFuture&lt;Boolean&gt; catalogJanitorSwitch(boolean on);<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * Query on the catalog janitor state.<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * @return true if the catalog janitor is on, false otherwise. The return value will be<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   *         wrapped by a {@link CompletableFuture}<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   */<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>  CompletableFuture&lt;Boolean&gt; isCatalogJanitorEnabled();<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span><a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>  /**<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * Ask for a scan of the catalog table.<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @return the number of entries cleaned. The return value will be wrapped by a<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   *         {@link CompletableFuture}<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>  CompletableFuture&lt;Integer&gt; runCatalogJanitor();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span><a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>  /**<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>   * Execute the given coprocessor call on the master.<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>   * &lt;p&gt;<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>   * The {@code stubMaker} is just a delegation to the {@code newStub} call. Usually it is only a<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>   * one line lambda expression, like:<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>   *<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>   * &lt;pre&gt;<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>   * &lt;code&gt;<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * channel -&gt; xxxService.newStub(channel)<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   * &lt;/code&gt;<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>   * &lt;/pre&gt;<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>   * @param stubMaker a delegation to the actual {@code newStub} call.<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>   * @param callable a delegation to the actual protobuf rpc call. See the comment of<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>   *          {@link ServiceCaller} for more details.<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>   * @param &lt;S&gt; the type of the asynchronous stub<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>   * @param &lt;R&gt; the type of the return value<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>   * @return the return value of the protobuf rpc call, wrapped by a {@link CompletableFuture}.<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>   * @see ServiceCaller<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   */<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>  &lt;S, R&gt; CompletableFuture&lt;R&gt; coprocessorService(Function&lt;RpcChannel, S&gt; stubMaker,<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>      ServiceCaller&lt;S, R&gt; callable);<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span><a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>  /**<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>   * Execute the given coprocessor call on the given region server.<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>   * &lt;p&gt;<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>   * The {@code stubMaker} is just a delegation to the {@code newStub} call. Usually it is only a<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>   * one line lambda expression, like:<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>   *<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>   * &lt;pre&gt;<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>   * &lt;code&gt;<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>   * channel -&gt; xxxService.newStub(channel)<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>   * &lt;/code&gt;<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>   * &lt;/pre&gt;<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>   * @param stubMaker a delegation to the actual {@code newStub} call.<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>   * @param callable a delegation to the actual protobuf rpc call. See the comment of<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>   *          {@link ServiceCaller} for more details.<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>   * @param serverName the given region server<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>   * @param &lt;S&gt; the type of the asynchronous stub<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>   * @param &lt;R&gt; the type of the return value<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>   * @return the return value of the protobuf rpc call, wrapped by a {@link CompletableFuture}.<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>   * @see ServiceCaller<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>   */<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  &lt;S, R&gt; CompletableFuture&lt;R&gt; coprocessorService(Function&lt;RpcChannel, S&gt; stubMaker,<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>    ServiceCaller&lt;S, R&gt; callable, ServerName serverName);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span><a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>  /**<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>   * List all the dead region servers.<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   */<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>  default CompletableFuture&lt;List&lt;ServerName&gt;&gt; listDeadServers() {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    return this.getClusterMetrics(EnumSet.of(Option.DEAD_SERVERS))<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>        .thenApply(ClusterMetrics::getDeadServerNames);<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>  }<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span><a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>  /**<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>   * Clear dead region servers from master.<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>   * @param servers list of dead region servers.<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>   * @return - returns a list of servers that not cleared wrapped by a {@link CompletableFuture}.<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>   */<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  CompletableFuture&lt;List&lt;ServerName&gt;&gt; clearDeadServers(final List&lt;ServerName&gt; servers);<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>  /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * Clear all the blocks corresponding to this table from BlockCache. For expert-admins. Calling<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * this API will drop all the cached blocks specific to a table from BlockCache. This can<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   * significantly impact the query performance as the subsequent queries will have to retrieve the<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>   * blocks from underlying filesystem.<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>   * @param tableName table to clear block cache<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>   * @return CacheEvictionStats related to the eviction wrapped by a {@link CompletableFuture}.<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>   */<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  CompletableFuture&lt;CacheEvictionStats&gt; clearBlockCache(final TableName tableName);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span><a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>  /**<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>   * Create a new table by cloning the existent table schema.<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>   *<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>   * @param tableName name of the table to be cloned<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>   * @param newTableName name of the new table where the table will be created<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>   * @param preserveSplits True if the splits should be preserved<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>   */<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>  CompletableFuture&lt;Void&gt;  cloneTableSchema(final TableName tableName,<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>      final TableName newTableName, final boolean preserveSplits);<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span><a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>  /**<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * Turn the compaction on or off. Disabling compactions will also interrupt any currently ongoing<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   * compactions. This state is ephemeral. The setting will be lost on restart. Compaction<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>   * can also be enabled/disabled by modifying configuration hbase.regionserver.compaction.enabled<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>   * in hbase-site.xml.<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>   *<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>   * @param switchState     Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>   * @param serverNamesList list of region servers.<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>   * @return Previous compaction states for region servers<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   */<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>  CompletableFuture&lt;Map&lt;ServerName, Boolean&gt;&gt; compactionSwitch(boolean switchState,<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>      List&lt;String&gt; serverNamesList);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span><a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>  /**<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>   * Switch the rpc throttle enabled state.<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>   * @return Previous rpc throttle enabled value<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>   */<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>  CompletableFuture&lt;Boolean&gt; switchRpcThrottle(boolean enable);<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span><a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>  /**<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>   * Get if the rpc throttle is enabled.<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>   * @return True if rpc throttle is enabled<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>   */<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  CompletableFuture&lt;Boolean&gt; isRpcThrottleEnabled();<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span><a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>  /**<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   * can be exceeded if region server has availble quota.<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   * @return Previous exceed throttle enabled value<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>   */<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  CompletableFuture&lt;Boolean&gt; exceedThrottleQuotaSwitch(boolean enable);<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span><a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  /**<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>   * Fetches the table sizes on the filesystem as tracked by the HBase Master.<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>  CompletableFuture&lt;Map&lt;TableName, Long&gt;&gt; getSpaceQuotaTableSizes();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span><a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>  /**<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>   * Fetches the observed {@link SpaceQuotaSnapshotView}s observed by a RegionServer.<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>   */<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>  CompletableFuture&lt;? extends Map&lt;TableName, ? extends SpaceQuotaSnapshotView&gt;&gt;<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      getRegionServerSpaceQuotaSnapshots(ServerName serverName);<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span><a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>  /**<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>   * Returns the Master's view of a quota on the given {@code namespace} or null if the Master has<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>   * no quota information on that namespace.<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>   */<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>  CompletableFuture&lt;? extends SpaceQuotaSnapshotView&gt;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      getCurrentSpaceQuotaSnapshot(String namespace);<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>   * Returns the Master's view of a quota on the given {@code tableName} or null if the Master has<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>   * no quota information on that table.<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   */<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>  CompletableFuture&lt;? extends SpaceQuotaSnapshotView&gt; getCurrentSpaceQuotaSnapshot(<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>      TableName tableName);<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span><a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>  /**<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>   * Grants user specific permissions<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>   * @param userPermission user name and the specific permission<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>   * @param mergeExistingPermissions If set to false, later granted permissions will override<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>   *          previous granted permissions. otherwise, it'll merge with previous granted<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>   *          permissions.<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>   */<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>  CompletableFuture&lt;Void&gt; grant(UserPermission userPermission, boolean mergeExistingPermissions);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span><a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>  /**<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * Revokes user specific permissions<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   * @param userPermission user name and the specific permission<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>   */<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>  CompletableFuture&lt;Void&gt; revoke(UserPermission userPermission);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span><a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>  /**<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>   * Get the global/namespace/table permissions for user<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>   * @param getUserPermissionsRequest A request contains which user, global, namespace or table<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>   *          permissions needed<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * @return The user and permission list<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   */<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>  CompletableFuture&lt;List&lt;UserPermission&gt;&gt;<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      getUserPermissions(GetUserPermissionsRequest getUserPermissionsRequest);<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span><a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>  /**<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   * Check if the user has specific permissions<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>   * @param userName the user name<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>   * @param permissions the specific permission list<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>   * @return True if user has the specific permissions<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>   */<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>  CompletableFuture&lt;List&lt;Boolean&gt;&gt; hasUserPermissions(String userName,<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      List&lt;Permission&gt; permissions);<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span><a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>  /**<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>   * Check if call user has specific permissions<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * @param permissions the specific permission list<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * @return True if user has the specific permissions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   */<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>  default CompletableFuture&lt;List&lt;Boolean&gt;&gt; hasUserPermissions(List&lt;Permission&gt; permissions) {<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>    return hasUserPermissions(null, permissions);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span><a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>  /**<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>   * Turn on or off the auto snapshot cleanup based on TTL.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>   * &lt;p/&gt;<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>   * Notice that, the method itself is always non-blocking, which means it will always return<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>   * immediately. The {@code sync} parameter only effects when will we complete the returned<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>   * {@link CompletableFuture}.<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>   *<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>   * @param sync If &lt;code&gt;true&lt;/code&gt;, it waits until current snapshot cleanup is completed,<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>   *   if outstanding.<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>   * @return Previous auto snapshot cleanup value wrapped by a {@link CompletableFuture}.<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>   */<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>  CompletableFuture&lt;Boolean&gt; snapshotCleanupSwitch(boolean on, boolean sync);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span><a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  /**<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>   * Query the current state of the auto snapshot cleanup based on TTL.<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>   *<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   * @return true if the auto snapshot cleanup is enabled, false otherwise.<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>   *   The return value will be wrapped by a {@link CompletableFuture}.<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>   */<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>  CompletableFuture&lt;Boolean&gt; isSnapshotCleanupEnabled();<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span><a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>}<a name="line.1510"></a>
+<span class="sourceLineNo">516</span>   * @deprecated since 2.3.0 and will be removed in 4.0.0.Use {@link #mergeRegions(List, boolean)}<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   *             instead.<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  @Deprecated<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  default CompletableFuture&lt;Void&gt; mergeRegions(byte[] nameOfRegionA, byte[] nameOfRegionB,<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      boolean forcible) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    return mergeRegions(Arrays.asList(nameOfRegionA, nameOfRegionB), forcible);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Merge multiple regions (&gt;=2).<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param nameOfRegionsToMerge encoded or full name of daughter regions<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param forcible true if do a compulsory merge, otherwise we will only merge two adjacent<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   *          regions<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  CompletableFuture&lt;Void&gt; mergeRegions(List&lt;byte[]&gt; nameOfRegionsToMerge, boolean forcible);<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>  /**<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * Split a table. The method will execute split action for each region in table.<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param tableName table to split<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  CompletableFuture&lt;Void&gt; split(TableName tableName);<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>  /**<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * Split an individual region.<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * @param regionName region to split<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   */<a name="line.542"></a>
+<span class="sourceLineNo">543</span>  CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName);<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * Split a table.<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * @param tableName table to split<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * @param splitPoint the explicit position to split on<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   */<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  CompletableFuture&lt;Void&gt; split(TableName tableName, byte[] splitPoint);<a name="line.550"></a>
+<span class="sourceLineNo">551</span><a name="line.551"></a>
+<span class="sourceLineNo">552</span>  /**<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * Split an individual region.<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param regionName region to split<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param splitPoint the explicit position to split on. If not present, it will decide by region<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   *          server.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   */<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName, byte[] splitPoint);<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @param regionName Encoded or full name of region to assign.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
+<span class="sourceLineNo">563</span>  CompletableFuture&lt;Void&gt; assign(byte[] regionName);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>  /**<a name="line.565"></a>
+<span class="sourceLineNo">566</span>   * Unassign a region from current hosting regionserver. Region will then be assigned to a<a name="line.566"></a>
+<span class="sourceLineNo">567</span>   * regionserver chosen at random. Region could be reassigned back to the same server. Use<a name="line.567"></a>
+<span class="sourceLineNo">568</span>   * {@link #move(byte[], ServerName)} if you want to control the region movement.<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   * @param regionName Encoded or full name of region to unassign. Will clear any existing<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   *          RegionPlan if one found.<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * @param forcible If true, force unassign (Will remove region from regions-in-transition too if<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   *          present. If results in double assignment use hbck -fix to resolve. To be used by<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   *          experts).<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   */<a name="line.574"></a>
+<span class="sourceLineNo">575</span>  CompletableFuture&lt;Void&gt; unassign(byte[] regionName, boolean forcible);<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span>  /**<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * Offline specified region from master's in-memory state. It will not attempt to reassign the<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * region as in unassign. This API can be used when a region not served by any region server and<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   * still online as per Master's in memory state. If this API is incorrectly used on active region<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * then master will loose track of that region. This is a special method that should be used by<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * experts or hbck.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * @param regionName Encoded or full name of region to offline<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  CompletableFuture&lt;Void&gt; offline(byte[] regionName);<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Move the region &lt;code&gt;r&lt;/code&gt; to a random server.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * @param regionName Encoded or full name of region to move.<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   */<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  CompletableFuture&lt;Void&gt; move(byte[] regionName);<a name="line.591"></a>
+<span class="sourceLineNo">592</span><a name="line.592"></a>
+<span class="sourceLineNo">593</span>  /**<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * Move the region &lt;code&gt;r&lt;/code&gt; to &lt;code&gt;dest&lt;/code&gt;.<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param regionName Encoded or full name of region to move.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param destServerName The servername of the destination regionserver. If not present, we'll<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   *          assign to a random server. A server name is made of host, port and startcode. Here is<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   *          an example: &lt;code&gt; host187.example.com,60020,1289493121758&lt;/code&gt;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   */<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  CompletableFuture&lt;Void&gt; move(byte[] regionName, ServerName destServerName);<a name="line.600"></a>
+<span class="sourceLineNo">601</span><a name="line.601"></a>
+<span class="sourceLineNo">602</span>  /**<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * Apply the new quota settings.<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param quota the quota settings<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  CompletableFuture&lt;Void&gt; setQuota(QuotaSettings quota);<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * List the quotas based on the filter.<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * @param filter the quota settings filter<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   * @return the QuotaSetting list, which wrapped by a CompletableFuture.<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   */<a name="line.612"></a>
+<span class="sourceLineNo">613</span>  CompletableFuture&lt;List&lt;QuotaSettings&gt;&gt; getQuota(QuotaFilter filter);<a name="line.613"></a>
+<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * Add a new replication peer for replicating data to slave cluster<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @param peerId a short name that identifies the peer<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @param peerConfig configuration for the replication slave cluster<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   */<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  default CompletableFuture&lt;Void&gt; addReplicationPeer(String peerId,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      ReplicationPeerConfig peerConfig) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    return addReplicationPeer(peerId, peerConfig, true);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>  }<a name="line.623"></a>
+<span class="sourceLineNo">624</span><a name="line.624"></a>
+<span class="sourceLineNo">625</span>  /**<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   * Add a new replication peer for replicating data to slave cluster<a name="line.626"></a>
+<span class="sourceLineNo">627</span>   * @param peerId a short name that identifies the peer<a name="line.627"></a>
+<span class="sourceLineNo">628</span>   * @param peerConfig configuration for the replication slave cluster<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   */<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  CompletableFuture&lt;Void&gt; addReplicationPeer(String peerId,<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      ReplicationPeerConfig peerConfig, boolean enabled);<a name="line.632"></a>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>  /**<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * Remove a peer and stop the replication<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param peerId a short name that identifies the peer<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
+<span class="sourceLineNo">638</span>  CompletableFuture&lt;Void&gt; removeReplicationPeer(String peerId);<a name="line.638"></a>
+<span class="sourceLineNo">639</span><a name="line.639"></a>
+<span class="sourceLineNo">640</span>  /**<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * Restart the replication stream to the specified peer<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param peerId a short name that identifies the peer<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   */<a name="line.643"></a>
+<span class="sourceLineNo">644</span>  CompletableFuture&lt;Void&gt; enableReplicationPeer(String peerId);<a name="line.644"></a>
+<span class="sourceLineNo">645</span><a name="line.645"></a>
+<span class="sourceLineNo">646</span>  /**<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Stop the replication stream to the specified peer<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param peerId a short name that identifies the peer<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   */<a name="line.649"></a>
+<span class="sourceLineNo">650</span>  CompletableFuture&lt;Void&gt; disableReplicationPeer(String peerId);<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span>  /**<a name="line.652"></a>
+<span class="sourceLineNo">653</span>   * Returns the configured ReplicationPeerConfig for the specified peer<a name="line.653"></a>
+<span class="sourceLineNo">654</span>   * @param peerId a short name that identifies the peer<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   * @return ReplicationPeerConfig for the peer wrapped by a {@link CompletableFuture}.<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   */<a name="line.656"></a>
+<span class="sourceLineNo">657</span>  CompletableFuture&lt;ReplicationPeerConfig&gt; getReplicationPeerConfig(String peerId);<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>  /**<a name="line.659"></a>
+<span class="sourceLineNo">660</span>   * Update the peerConfig for the specified peer<a name="line.660"></a>
+<span class="sourceLineNo">661</span>   * @param peerId a short name that identifies the peer<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param peerConfig new config for the peer<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   */<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  CompletableFuture&lt;Void&gt; updateReplicationPeerConfig(String peerId,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      ReplicationPeerConfig peerConfig);<a name="line.665"></a>
+<span class="sourceLineNo">666</span><a name="line.666"></a>
+<span class="sourceLineNo">667</span>  /**<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * Transit current cluster to a new state in a synchronous replication peer.<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param peerId a short name that identifies the peer<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param state a new state of current cluster<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   */<a name="line.671"></a>
+<span class="sourceLineNo">672</span>  CompletableFuture&lt;Void&gt; transitReplicationPeerSyncReplicationState(String peerId,<a name="line.672"></a>
+<span class="sourceLineNo">673</span>      SyncReplicationState state);<a name="line.673"></a>
+<span class="sourceLineNo">674</span><a name="line.674"></a>
+<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * Get the current cluster state in a synchronous replication peer.<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   * @param peerId a short name that identifies the peer<a name="line.677"></a>
+<span class="sourceLineNo">678</span>   * @return the current cluster state wrapped by a {@link CompletableFuture}.<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   */<a name="line.679"></a>
+<span class="sourceLineNo">680</span>  default CompletableFuture&lt;SyncReplicationState&gt; getReplicationPeerSyncReplicationState(<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      String peerId) {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    CompletableFuture&lt;SyncReplicationState&gt; future = new CompletableFuture&lt;&gt;();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    addListener(listReplicationPeers(Pattern.compile(peerId)), (peers, error) -&gt; {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      if (error != null) {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        future.completeExceptionally(error);<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      } else if (peers.isEmpty() || !peers.get(0).getPeerId().equals(peerId)) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>        future<a name="line.687"></a>
+<span class="sourceLineNo">688</span>          .completeExceptionally(new IOException("Replication peer " + peerId + " does not exist"));<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      } else {<a name="line.689"></a>
+<span class="sourceLineNo">690</span>        future.complete(peers.get(0).getSyncReplicationState());<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      }<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    });<a name="line.692"></a>
+<span class="sourceLineNo">693</span>    return future;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
+<span class="sourceLineNo">695</span><a name="line.695"></a>
+<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * Append the replicable table-cf config of the specified peer<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param peerId a short that identifies the cluster<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param tableCfs A map from tableName to column family names<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   */<a name="line.700"></a>
+<span class="sourceLineNo">701</span>  CompletableFuture&lt;Void&gt; appendReplicationPeerTableCFs(String peerId,<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs);<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>  /**<a name="line.704"></a>
+<span class="sourceLineNo">705</span>   * Remove some table-cfs from config of the specified peer<a name="line.705"></a>
+<span class="sourceLineNo">706</span>   * @param peerId a short name that identifies the cluster<a name="line.706"></a>
+<span class="sourceLineNo">707</span>   * @param tableCfs A map from tableName to column family names<a name="line.707"></a>
+<span class="sourceLineNo">708</span>   */<a name="line.708"></a>
+<span class="sourceLineNo">709</span>  CompletableFuture&lt;Void&gt; removeReplicationPeerTableCFs(String peerId,<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs);<a name="line.710"></a>
+<span class="sourceLineNo">711</span><a name="line.711"></a>
+<span class="sourceLineNo">712</span>  /**<a name="line.712"></a>
+<span class="sourceLineNo">713</span>   * Return a list of replication peers.<a name="line.713"></a>
+<span class="sourceLineNo">714</span>   * @return a list of replication peers description. The return value will be wrapped by a<a name="line.714"></a>
+<span class="sourceLineNo">715</span>   *         {@link CompletableFuture}.<a name="line.715"></a>
+<span class="sourceLineNo">716</span>   */<a name="line.716"></a>
+<span class="sourceLineNo">717</span>  CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers();<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>  /**<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * Return a list of replication peers.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   * @param pattern The compiled regular expression to match peer id<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * @return a list of replication peers description. The return value will be wrapped by a<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   *         {@link CompletableFuture}.<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   */<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers(Pattern pattern);<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>  /**<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   * Find all table and column families that are replicated from this cluster<a name="line.728"></a>
+<span class="sourceLineNo">729</span>   * @return the replicated table-cfs list of this cluster. The return value will be wrapped by a<a name="line.729"></a>
+<span class="sourceLineNo">730</span>   *         {@link CompletableFuture}.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   */<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  CompletableFuture&lt;List&lt;TableCFs&gt;&gt; listReplicatedTableCFs();<a name="line.732"></a>
+<span class="sourceLineNo">733</span><a name="line.733"></a>
+<span class="sourceLineNo">734</span>  /**<a name="line.734"></a>
+<span class="sourceLineNo">735</span>   * Enable a table's replication switch.<a name="line.735"></a>
+<span class="sourceLineNo">736</span>   * @param tableName name of the table<a name="line.736"></a>
+<span class="sourceLineNo">737</span>   */<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  CompletableFuture&lt;Void&gt; enableTableReplication(TableName tableName);<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  /**<a name="line.740"></a>
+<span class="sourceLineNo">741</span>   * Disable a table's replication switch.<a name="line.741"></a>
+<span class="sourceLineNo">742</span>   * @param tableName name of the table<a name="line.742"></a>
+<span class="sourceLineNo">743</span>   */<a name="line.743"></a>
+<span class="sourceLineNo">744</span>  CompletableFuture&lt;Void&gt; disableTableReplication(TableName tableName);<a name="line.744"></a>
+<span class="sourceLineNo">745</span><a name="line.745"></a>
+<span class="sourceLineNo">746</span>  /**<a name="line.746"></a>
+<span class="sourceLineNo">747</span>   * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be<a name="line.747"></a>
+<span class="sourceLineNo">748</span>   * taken. If the table is disabled, an offline snapshot is taken. Snapshots are taken<a name="line.748"></a>
+<span class="sourceLineNo">749</span>   * sequentially even when requested concurrently, across all tables. Snapshots are considered<a name="line.749"></a>
+<span class="sourceLineNo">750</span>   * unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;. Attempts to take a snapshot with the same<a name="line.750"></a>
+<span class="sourceLineNo">751</span>   * name (even a different type or with different parameters) will fail with a<a name="line.751"></a>
+<span class="sourceLineNo">752</span>   * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate<a name="line.752"></a>
+<span class="sourceLineNo">753</span>   * naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.753"></a>
+<span class="sourceLineNo">754</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.754"></a>
+<span class="sourceLineNo">755</span>   * @param snapshotName name of the snapshot to be created<a name="line.755"></a>
+<span class="sourceLineNo">756</span>   * @param tableName name of the table for which snapshot is created<a name="line.756"></a>
+<span class="sourceLineNo">757</span>   */<a name="line.757"></a>
+<span class="sourceLineNo">758</span>  default CompletableFuture&lt;Void&gt; snapshot(String snapshotName, TableName tableName) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    return snapshot(snapshotName, tableName, SnapshotType.FLUSH);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>  /**<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   * Create typed snapshot of the table. Snapshots are considered unique based on &lt;b&gt;the name of the<a name="line.763"></a>
+<span class="sourceLineNo">764</span>   * snapshot&lt;/b&gt;. Snapshots are taken sequentially even when requested concurrently, across all<a name="line.764"></a>
+<span class="sourceLineNo">765</span>   * tables. Attempts to take a snapshot with the same name (even a different type or with<a name="line.765"></a>
+<span class="sourceLineNo">766</span>   * different parameters) will fail with a<a name="line.766"></a>
+<span class="sourceLineNo">767</span>   * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate<a name="line.767"></a>
+<span class="sourceLineNo">768</span>   * naming. Snapshot names follow the same naming constraints as tables in HBase. See<a name="line.768"></a>
+<span class="sourceLineNo">769</span>   * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.769"></a>
+<span class="sourceLineNo">770</span>   * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other<a name="line.770"></a>
+<span class="sourceLineNo">771</span>   *          snapshots stored on the cluster<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * @param tableName name of the table to snapshot<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * @param type type of snapshot to take<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   */<a name="line.774"></a>
+<span class="sourceLineNo">775</span>  default CompletableFuture&lt;Void&gt; snapshot(String snapshotName, TableName tableName,<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      SnapshotType type) {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    return snapshot(new SnapshotDescription(snapshotName, tableName, type));<a name="line.777"></a>
+<span class="sourceLineNo">778</span>  }<a name="line.778"></a>
+<span class="sourceLineNo">779</span><a name="line.779"></a>
+<span class="sourceLineNo">780</span>  /**<a name="line.780"></a>
+<span class="sourceLineNo">781</span>   * Take a snapshot and wait for the server to complete that snapshot asynchronously. Snapshots<a name="line.781"></a>
+<span class="sourceLineNo">782</span>   * are taken sequentially even when requested concurrently, across all tables. Snapshots are<a name="line.782"></a>
+<span class="sourceLineNo">783</span>   * considered unique based on &lt;b&gt;the name of the snapshot&lt;/b&gt;.<a name="line.783"></a>
+<span class="sourceLineNo">784</span>   * Attempts to take a snapshot with the same name (even a different type or with different<a name="line.784"></a>
+<span class="sourceLineNo">785</span>   * parameters) will fail with a {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException}<a name="line.785"></a>
+<span class="sourceLineNo">786</span>   * indicating the duplicate naming. Snapshot names follow the same naming constraints as tables in<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * HBase. See {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * You should probably use {@link #snapshot(String, org.apache.hadoop.hbase.TableName)} unless you<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   * are sure about the type of snapshot that you want to take.<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   * @param snapshot snapshot to take<a name="line.790"></a>
+<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
+<span class="sourceLineNo">792</span>  CompletableFuture&lt;Void&gt; snapshot(SnapshotDescription snapshot);<a name="line.792"></a>
+<span class="sourceLineNo">793</span><a name="line.793"></a>
+<span class="sourceLineNo">794</span>  /**<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   * Check the current state of the passed snapshot. There are three possible states:<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   * &lt;ol&gt;<a name="line.796"></a>
+<span class="sourceLineNo">797</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt;<a name="line.797"></a>
+<span class="sourceLineNo">798</span>   * &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.798"></a>
+<span class="sourceLineNo">799</span>   * &lt;li&gt;finished with error - throws the exception that caused the snapshot to fail&lt;/li&gt;<a name="line.799"></a>
+<span class="sourceLineNo">800</span>   * &lt;/ol&gt;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>   * The cluster only knows about the most recent snapshot. Therefore, if another snapshot has been<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   * run/started since the snapshot you are checking, you will receive an<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * {@link org.apache.hadoop.hbase.snapshot.UnknownSnapshotException}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * @param snapshot description of the snapshot to check<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the snapshot is completed, &lt;tt&gt;false&lt;/tt&gt; if the snapshot is still<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   *         running<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   */<a name="line.807"></a>
+<span class="sourceLineNo">808</span>  CompletableFuture&lt;Boolean&gt; isSnapshotFinished(SnapshotDescription snapshot);<a name="line.808"></a>
+<span class="sourceLineNo">809</span><a name="line.809"></a>
+<span class="sourceLineNo">810</span>  /**<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If the<a name="line.811"></a>
+<span class="sourceLineNo">812</span>   * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to true, a<a name="line.812"></a>
+<span class="sourceLineNo">813</span>   * snapshot of the current table is taken before executing the restore operation. In case of<a name="line.813"></a>
+<span class="sourceLineNo">814</span>   * restore failure, the failsafe snapshot will be restored. If the restore completes without<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   * problem the failsafe snapshot is deleted.<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   * @param snapshotName name of the snapshot to restore<a name="line.816"></a>
+<span class="sourceLineNo">817</span>   */<a name="line.817"></a>
+<span class="sourceLineNo">818</span>  CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName);<a name="line.818"></a>
+<span class="sourceLineNo">819</span><a name="line.819"></a>
+<span class="sourceLineNo">820</span>  /**<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   * executing the restore operation. In case of restore failure, the failsafe snapshot will be<a name="line.823"></a>
+<span class="sourceLineNo">824</span>   * restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * failsafe snapshot name is configurable by using the property<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * @param snapshotName name of the snapshot to restore<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken<a name="line.828"></a>
+<span class="sourceLineNo">829</span>   */<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  default CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName,<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      boolean takeFailSafeSnapshot) {<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    return restoreSnapshot(snapshotName, takeFailSafeSnapshot, false);<a name="line.832"></a>
+<span class="sourceLineNo">833</span>  }<a name="line.833"></a>
+<span class="sourceLineNo">834</span><a name="line.834"></a>
+<span class="sourceLineNo">835</span>  /**<a name="line.835"></a>
+<span class="sourceLineNo">836</span>   * Restore the specified snapshot on the original table. (The table must be disabled) If<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * executing the restore operation. In case of restore failure, the failsafe snapshot will be<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   * restored. If the restore completes without problem the failsafe snapshot is deleted. The<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * failsafe snapshot name is configurable by using the property<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * "hbase.snapshot.restore.failsafe.name".<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @param snapshotName name of the snapshot to restore<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to restore acl of snapshot<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   */<a name="line.845"></a>
+<span class="sourceLineNo">846</span>  CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot,<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      boolean restoreAcl);<a name="line.847"></a>
+<span class="sourceLineNo">848</span><a name="line.848"></a>
+<span class="sourceLineNo">849</span>  /**<a name="line.849"></a>
+<span class="sourceLineNo">850</span>   * Create a new table by cloning the snapshot content.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.851"></a>
+<span class="sourceLineNo">852</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.852"></a>
+<span class="sourceLineNo">853</span>   */<a name="line.853"></a>
+<span class="sourceLineNo">854</span>  default CompletableFuture&lt;Void&gt; cloneSnapshot(String snapshotName, TableName tableName) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>    return cloneSnapshot(snapshotName, tableName, false);<a name="line.855"></a>
+<span class="sourceLineNo">856</span>  }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>  /**<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * Create a new table by cloning the snapshot content.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @param snapshotName name of the snapshot to be cloned<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   * @param tableName name of the table where the snapshot will be restored<a name="line.861"></a>
+<span class="sourceLineNo">862</span>   * @param restoreAcl &lt;code&gt;true&lt;/code&gt; to restore acl of snapshot<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   */<a name="line.863"></a>
+<span class="sourceLineNo">864</span>  CompletableFuture&lt;Void&gt; cloneSnapshot(String snapshotName, TableName tableName,<a name="line.864"></a>
+<span class="sourceLineNo">865</span>      boolean restoreAcl);<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>  /**<a name="line.867"></a>
+<span class="sourceLineNo">868</span>   * List completed snapshots.<a name="line.868"></a>
+<span class="sourceLineNo">869</span>   * @return a list of snapshot descriptors for completed snapshots wrapped by a<a name="line.869"></a>
+<span class="sourceLineNo">870</span>   *         {@link CompletableFuture}<a name="line.870"></a>
+<span class="sourceLineNo">871</span>   */<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots();<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  /**<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * List all the completed snapshots matching the given pattern.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   * @param pattern The compiled regular expression to match against<a name="line.876"></a>
+<span class="sourceLineNo">877</span>   * @return - returns a List of SnapshotDescription wrapped by a {@link CompletableFuture}<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   */<a name="line.878"></a>
+<span class="sourceLineNo">879</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots(Pattern pattern);<a name="line.879"></a>
+<span class="sourceLineNo">880</span><a name="line.880"></a>
+<span class="sourceLineNo">881</span>  /**<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * List all the completed snapshots matching the given table name pattern.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.883"></a>
+<span class="sourceLineNo">884</span>   * @return - returns a List of completed SnapshotDescription wrapped by a<a name="line.884"></a>
+<span class="sourceLineNo">885</span>   *         {@link CompletableFuture}<a name="line.885"></a>
+<span class="sourceLineNo">886</span>   */<a name="line.886"></a>
+<span class="sourceLineNo">887</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern);<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>  /**<a name="line.889"></a>
+<span class="sourceLineNo">890</span>   * List all the completed snapshots matching the given table name regular expression and snapshot<a name="line.890"></a>
+<span class="sourceLineNo">891</span>   * name regular expression.<a name="line.891"></a>
+<span class="sourceLineNo">892</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.892"></a>
+<span class="sourceLineNo">893</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * @return - returns a List of completed SnapshotDescription wrapped by a<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   *         {@link CompletableFuture}<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   */<a name="line.896"></a>
+<span class="sourceLineNo">897</span>  CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern,<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      Pattern snapshotNamePattern);<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>  /**<a name="line.900"></a>
+<span class="sourceLineNo">901</span>   * Delete an existing snapshot.<a name="line.901"></a>
+<span class="sourceLineNo">902</span>   * @param snapshotName name of the snapshot<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
+<span class="sourceLineNo">904</span>  CompletableFuture&lt;Void&gt; deleteSnapshot(String snapshotName);<a name="line.904"></a>
+<span class="sourceLineNo">905</span><a name="line.905"></a>
+<span class="sourceLineNo">906</span>  /**<a name="line.906"></a>
+<span class="sourceLineNo">907</span>   * Delete all existing snapshots.<a name="line.907"></a>
+<span class="sourceLineNo">908</span>   */<a name="line.908"></a>
+<span class="sourceLineNo">909</span>  CompletableFuture&lt;Void&gt; deleteSnapshots();<a name="line.909"></a>
+<span class="sourceLineNo">910</span><a name="line.910"></a>
+<span class="sourceLineNo">911</span>  /**<a name="line.911"></a>
+<span class="sourceLineNo">912</span>   * Delete existing snapshots whose names match the pattern passed.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>   * @param pattern pattern for names of the snapshot to match<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   */<a name="line.914"></a>
+<span class="sourceLineNo">915</span>  CompletableFuture&lt;Void&gt; deleteSnapshots(Pattern pattern);<a name="line.915"></a>
+<span class="sourceLineNo">916</span><a name="line.916"></a>
+<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * Delete all existing snapshots matching the given table name pattern.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
+<span class="sourceLineNo">921</span>  CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern);<a name="line.921"></a>
+<span class="sourceLineNo">922</span><a name="line.922"></a>
+<span class="sourceLineNo">923</span>  /**<a name="line.923"></a>
+<span class="sourceLineNo">924</span>   * Delete all existing snapshots matching the given table name regular expression and snapshot<a name="line.924"></a>
+<span class="sourceLineNo">925</span>   * name regular expression.<a name="line.925"></a>
+<span class="sourceLineNo">926</span>   * @param tableNamePattern The compiled table name regular expression to match against<a name="line.926"></a>
+<span class="sourceLineNo">927</span>   * @param snapshotNamePattern The compiled snapshot name regular expression to match against<a name="line.927"></a>
+<span class="sourceLineNo">928</span>   */<a name="line.928"></a>
+<span class="sourceLineNo">929</span>  CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern,<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      Pattern snapshotNamePattern);<a name="line.930"></a>
+<span class="sourceLineNo">931</span><a name="line.931"></a>
+<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * Execute a distributed procedure on a cluster.<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   *          root ZK node name of the procedure).<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.936"></a>
+<span class="sourceLineNo">937</span>   *          optional.<a name="line.937"></a>
+<span class="sourceLineNo">938</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  CompletableFuture&lt;Void&gt; execProcedure(String signature, String instance,<a name="line.940"></a>
+<span class="sourceLineNo">941</span>      Map&lt;String, String&gt; props);<a name="line.941"></a>
+<span class="sourceLineNo">942</span><a name="line.942"></a>
+<span class="sourceLineNo">943</span>  /**<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   * Execute a distributed procedure on a cluster.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>   * @param signature A distributed procedure is uniquely identified by its signature (default the<a name="line.945"></a>
+<span class="sourceLineNo">946</span>   *          root ZK node name of the procedure).<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   * @param instance The instance name of the procedure. For some procedures, this parameter is<a name="line.947"></a>
+<span class="sourceLineNo">948</span>   *          optional.<a name="line.948"></a>
+<span class="sourceLineNo">949</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.949"></a>
+<span class="sourceLineNo">950</span>   * @return data returned after procedure execution. null if no return data.<a name="line.950"></a>
+<span class="sourceLineNo">951</span>   */<a name="line.951"></a>
+<span class="sourceLineNo">952</span>  CompletableFuture&lt;byte[]&gt; execProcedureWithReturn(String signature, String instance,<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      Map&lt;String, String&gt; props);<a name="line.953"></a>
+<span class="sourceLineNo">954</span><a name="line.954"></a>
+<span class="sourceLineNo">955</span>  /**<a name="line.955"></a>
+<span class="sourceLineNo">956</span>   * Check the current state of the specified procedure. There are three possible states:<a name="line.956"></a>
+<span class="sourceLineNo">957</span>   * &lt;ol&gt;<a name="line.957"></a>
+<span class="sourceLineNo">958</span>   * &lt;li&gt;running - returns &lt;tt&gt;false&lt;/tt&gt;&lt;/li&gt;<a name="line.958"></a>
+<span class="sourceLineNo">959</span>   * &lt;li&gt;finished - returns &lt;tt&gt;true&lt;/tt&gt;&lt;/li&gt;<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * &lt;li&gt;finished with error - throws the exception that caused the procedure to fail&lt;/li&gt;<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * &lt;/ol&gt;<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param signature The signature that uniquely identifies a procedure<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param instance The instance name of the procedure<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @param props Property/Value pairs of properties passing to the procedure<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   * @return true if the specified procedure is finished successfully, false if it is still running.<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   *         The value is wrapped by {@link CompletableFuture}<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   */<a name="line.967"></a>
+<span class="sourceLineNo">968</span>  CompletableFuture&lt;Boolean&gt; isProcedureFinished(String signature, String instance,<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      Map&lt;String, String&gt; props);<a name="line.969"></a>
+<span class="sourceLineNo">970</span><a name="line.970"></a>
+<span class="sourceLineNo">971</span>  /**<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * Abort a procedure<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.<a name="line.973"></a>
+<span class="sourceLineNo">974</span>   * @param procId ID of the procedure to abort<a name="line.974"></a>
+<span class="sourceLineNo">975</span>   * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.975"></a>
+<span class="sourceLineNo">976</span>   * @return true if aborted, false if procedure already completed or does not exist. the value is<a name="line.976"></a>
+<span class="sourceLineNo">977</span>   *         wrapped by {@link CompletableFuture}<a name="line.977"></a>
+<span class="sourceLineNo">978</span>   * @deprecated since 2.1.1 and will be removed in 4.0.0.<a name="line.978"></a>
+<span class="sourceLineNo">979</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21223"&gt;HBASE-21223&lt;/a&gt;<a name="line.979"></a>
+<span class="sourceLineNo">980</span>   */<a name="line.980"></a>
+<span class="sourceLineNo">981</span>  @Deprecated<a name="line.981"></a>
+<span class="sourceLineNo">982</span>  CompletableFuture&lt;Boolean&gt; abortProcedure(long procId, boolean mayInterruptIfRunning);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>  /**<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   * List procedures<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * @return procedure list JSON wrapped by {@link CompletableFuture}<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
+<span class="sourceLineNo">988</span>  CompletableFuture&lt;String&gt; getProcedures();<a name="line.988"></a>
+<span class="sourceLineNo">989</span><a name="line.989"></a>
+<span class="sourceLineNo">990</span>  /**<a name="line.990"></a>
+<span class="sourceLineNo">991</span>   * List locks.<a name="line.991"></a>
+<span class="sourceLineNo">992</span>   * @return lock list JSON wrapped by {@link CompletableFuture}<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   */<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  CompletableFuture&lt;String&gt; getLocks();<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  /**<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * Mark region server(s) as decommissioned to prevent additional regions from getting<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * assigned to them. Optionally unload the regions on the servers. If there are multiple servers<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   * to be decommissioned, decommissioning them at the same time can prevent wasteful region<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>   * movements. Region unloading is asynchronous.<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>   * @param servers The list of servers to decommission.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>   * @param offload True to offload the regions from the decommissioned servers<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>  CompletableFuture&lt;Void&gt; decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload);<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span><a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>  /**<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>   * List region servers marked as decommissioned, which can not be assigned regions.<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>   * @return List of decommissioned region servers wrapped by {@link CompletableFuture}<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>   */<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>  CompletableFuture&lt;List&lt;ServerName&gt;&gt; listDecommissionedRegionServers();<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span><a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  /**<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>   * Remove decommission marker from a region server to allow regions assignments. Load regions onto<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>   * the server if a list of regions is given. Region loading is asynchronous.<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>   * @param server The server to recommission.<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * @param encodedRegionNames Regions to load onto the server.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   */<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  CompletableFuture&lt;Void&gt; recommissionRegionServer(ServerName server,<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>      List&lt;byte[]&gt; encodedRegionNames);<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>  /**<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * @return cluster status wrapped by {@link CompletableFuture}<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>  CompletableFuture&lt;ClusterMetrics&gt; getClusterMetrics();<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span><a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  /**<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>   * @return cluster status wrapped by {@link CompletableFuture}<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>   */<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>  CompletableFuture&lt;ClusterMetrics&gt; getClusterMetrics(EnumSet&lt;Option&gt; options);<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span><a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>  /**<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   * @return current master server name wrapped by {@link CompletableFuture}<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  default CompletableFuture&lt;ServerName&gt; getMaster() {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return getClusterMetrics(EnumSet.of(Option.MASTER)).thenApply(ClusterMetrics::getMasterName);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  /**<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * @return current backup master list wrapped by {@link CompletableFuture}<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   */<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>  default CompletableFuture&lt;Collection&lt;ServerName&gt;&gt; getBackupMasters() {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>    return getClusterMetrics(EnumSet.of(Option.BACKUP_MASTERS))<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      .thenApply(ClusterMetrics::getBackupMasterNames);<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  }<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span><a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>  /**<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>   * @return current live region servers list wrapped by {@link CompletableFuture}<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>   */<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>  default CompletableFuture&lt;Collection&lt;ServerName&gt;&gt; getRegionServers() {<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    return getClusterMetrics(EnumSet.of(Option.SERVERS_NAME))<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        .thenApply(ClusterMetrics::getServersName);<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>  }<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span><a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>  /**<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>   * @return a list of master coprocessors wrapped by {@link CompletableFuture}<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>   */<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>  default CompletableFuture&lt;List&lt;String&gt;&gt; getMasterCoprocessorNames() {<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_COPROCESSORS))<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>        .thenApply(ClusterMetrics::getMasterCoprocessorNames);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span><a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>  /**<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>   * Get the info port of the current master if one is available.<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>   * @return master info port<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>   */<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>  default CompletableFuture&lt;Integer&gt; getMasterInfoPort() {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>    return getClusterMetrics(EnumSet.of(Option.MASTER_INFO_PORT)).thenApply(<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>      ClusterMetrics::getMasterInfoPort);<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>  }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span><a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>  /**<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>   * Shuts down the HBase cluster.<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>   */<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  CompletableFuture&lt;Void&gt; shutdown();<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span><a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>  /**<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * Shuts down the current HBase master only.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   */<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>  CompletableFuture&lt;Void&gt; stopMaster();<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>  /**<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>   * Stop the designated regionserver.<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>   * @param serverName<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>   */<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>  CompletableFuture&lt;Void&gt; stopRegionServer(ServerName serverName);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span><a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>  /**<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>   * Update the configuration and trigger an online config change on the regionserver.<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>   * @param serverName : The server whose config needs to be updated.<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>   */<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>  CompletableFuture&lt;Void&gt; updateConfiguration(ServerName serverName);<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>  /**<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>   * Update the configuration and trigger an online config change on all the masters and<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>   * regionservers.<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>   */<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>  CompletableFuture&lt;Void&gt; updateConfiguration();<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span><a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>  /**<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>   * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>   * &lt;p&gt;<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>   * When the returned CompletableFuture is done, it only means the rollWALWriter request was sent<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>   * to the region server and may need some time to finish the rollWALWriter operation. As a side<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>   * effect of this call, the named region server may schedule store flushes at the request of the<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>   * wal.<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>   * @param serverName The servername of the region server.<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>   */<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  CompletableFuture&lt;Void&gt; rollWALWriter(ServerName serverName);<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>   * Clear compacting queues on a region server.<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>   * @param serverName<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>   * @param queues the set of queue name<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>   */<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>  CompletableFuture&lt;Void&gt; clearCompactionQueues(ServerName serverName, Set&lt;String&gt; queues);<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span><a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>  /**<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>   * Get a list of {@link RegionMetrics} of all regions hosted on a region seerver.<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>   * @param serverName<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>   * @return a list of {@link RegionMetrics} wrapped by {@link CompletableFuture}<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>   */<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>  CompletableFuture&lt;List&lt;RegionMetrics&gt;&gt; getRegionMetrics(ServerName serverName);<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span><a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>  /**<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>   * Get a list of {@link RegionMetrics} of all regions hosted on a region seerver for a table.<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>   * @param serverName<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>   * @param tableName<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>   * @return a list of {@link RegionMetrics} wrapped by {@link CompletableFuture}<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>   */<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>  CompletableFuture&lt;List&lt;RegionMetrics&gt;&gt; getRegionMetrics(ServerName serverName,<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    TableName tableName);<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span><a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>  /**<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>   * Check whether master is in maintenance mode<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>   * @return true if master is in maintenance mode, false otherwise. The return value will be<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>   *         wrapped by a {@link CompletableFuture}<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>   */<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>  CompletableFuture&lt;Boolean&gt; isMasterInMaintenanceMode();<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span><a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>  /**<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>   * Get the current compaction state of a table. It could be in a major compaction, a minor<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>   * compaction, both, or none.<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>   * @param tableName table to examine<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>   * @return the current compaction state wrapped by a {@link CompletableFuture}<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>   */<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>  default CompletableFuture&lt;CompactionState&gt; getCompactionState(TableName tableName) {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    return getCompactionState(tableName, CompactType.NORMAL);<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>  }<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span><a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>  /**<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>   * Get the current compaction state of a table. It could be in a major compaction, a minor<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>   * compaction, both, or none.<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>   * @param tableName table to examine<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>   * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>   * @return the current compaction state wrapped by a {@link CompletableFuture}<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>   */<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>  CompletableFuture&lt;CompactionState&gt; getCompactionState(TableName tableName,<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>      CompactType compactType);<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span><a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>  /**<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>   * Get the current compaction state of region. It could be in a major compaction, a minor<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>   * compaction, both, or none.<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>   * @param regionName region to examine<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>   * @return the current compaction state wrapped by a {@link CompletableFuture}<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>   */<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>  CompletableFuture&lt;CompactionState&gt; getCompactionStateForRegion(byte[] regionName);<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span><a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>  /**<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span>   * Get the timestamp of the last major compaction for the passed table.<a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>   * &lt;p&gt;<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>   * The timestamp of the oldest HFile resulting from a major compaction of that table, or not<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>   * present if no such HFile could be found.<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>   * @param tableName table to examine<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>   * @return the last major compaction timestamp wrapped by a {@link CompletableFuture}<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>   */<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>  CompletableFuture&lt;Optional&lt;Long&gt;&gt; getLastMajorCompactionTimestamp(TableName tableName);<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span><a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>  /**<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>   * Get the timestamp of the last major compaction for the passed region.<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>   * &lt;p&gt;<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>   * The timestamp of the oldest HFile resulting from a major compaction of that region, or not<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>   * present if no such HFile could be found.<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>   * @param regionName region to examine<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>   * @return the last major compaction timestamp wrapped by a {@link CompletableFuture}<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   */<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>  CompletableFuture&lt;Optional&lt;Long&gt;&gt; getLastMajorCompactionTimestampForRegion(byte[] regionName);<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span><a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>  /**<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>   * @return the list of supported security capabilities. The return value will be wrapped by a<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>   *         {@link CompletableFuture}.<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>   */<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span>  CompletableFuture&lt;List&lt;SecurityCapability&gt;&gt; getSecurityCapabilities();<a name="line.1192"></a>
+<span class="sourceLineNo">1193</span><a name="line.1193"></a>
+<span class="sourceLineNo">1194</span>  /**<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>   * Turn the load balancer on or off.<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>   * @return Previous balancer value wrapped by a {@link CompletableFuture}.<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>   */<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>  default CompletableFuture&lt;Boolean&gt; balancerSwitch(boolean on) {<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>    return balancerSwitch(on, false);<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>  }<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span><a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>  /**<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>   * Turn the load balancer on or off.<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>   * &lt;p/&gt;<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span>   * Notice that, the method itself is always non-blocking, which means it will always return<a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>   * immediately. The {@code drainRITs} parameter only effects when will we complete the returned<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>   * {@link CompletableFuture}.<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>   * @param drainRITs If &lt;code&gt;true&lt;/code&gt;, it waits until current balance() call, if outstanding,<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>   *          to return.<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>   * @return Previous balancer value wrapped by a {@link CompletableFuture}.<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>   */<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>  CompletableFuture&lt;Boolean&gt; balancerSwitch(boolean on, boolean drainRITs);<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span><a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>  /**<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>   * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>   * reassignments. Can NOT run for various reasons. Check logs.<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>   * @return True if balancer ran, false otherwise. The return value will be wrapped by a<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>   *         {@link CompletableFuture}.<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>   */<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>  default CompletableFuture&lt;Boolean&gt; balance() {<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>    return balance(false);<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>  }<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span><a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>  /**<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>   * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>   * reassignments. If there is region in transition, force parameter of true would still run<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>   * balancer. Can *not* run for other reasons. Check logs.<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>   * @param forcible whether we should force balance even if there is region in transition.<a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>   * @return True if balancer ran, false otherwise. The return value will be wrapped by a<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>   *         {@link CompletableFuture}.<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span>   */<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>  CompletableFuture&lt;Boolean&gt; balance(boolean forcible);<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span><a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>  /**<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span>   * Query the current state of the balancer.<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>   * @return true if the balance switch is on, false otherwise. The return value will be wrapped by a<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>   *         {@link CompletableFuture}.<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>   */<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  CompletableFuture&lt;Boolean&gt; isBalancerEnabled();<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span><a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  /**<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>   * Set region normalizer on/off.<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>   * @param on whether normalizer should be on or off<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>   * @return Previous normalizer value wrapped by a {@link CompletableFuture}<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>   */<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>  CompletableFuture&lt;Boolean&gt; normalizerSwitch(boolean on);<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span><a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>  /**<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>   * Query the current state of the region normalizer<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>   * @return true if region normalizer is on, false otherwise. The return value will be wrapped by a<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>   *         {@link CompletableFuture}<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>   */<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  CompletableFuture&lt;Boolean&gt; isNormalizerEnabled();<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Invoke region normalizer. Can NOT run for various reasons. Check logs.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @return true if region normalizer ran, false otherwise. The return value will be wrapped by a<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   *         {@link CompletableFuture}<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>   */<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>  CompletableFuture&lt;Boolean&gt; normalize();<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span><a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>  /**<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>   * Turn the cleaner chore on/off.<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>   * @param on<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>   * @return Previous cleaner state wrapped by a {@link CompletableFuture}<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>   */<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>  CompletableFuture&lt;Boolean&gt; cleanerChoreSwitch(boolean on);<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span><a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>  /**<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>   * Query the current state of the cleaner chore.<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>   * @return true if cleaner chore is on, false otherwise. The return value will be wrapped by<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>   *         a {@link CompletableFuture}<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>   */<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>  CompletableFuture&lt;Boolean&gt; isCleanerChoreEnabled();<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span><a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>  /**<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>   * Ask for cleaner chore to run.<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>   * @return true if cleaner chore ran, false otherwise. The return value will be wrapped by a<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>   *         {@link CompletableFuture}<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>   */<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>  CompletableFuture&lt;Boolean&gt; runCleanerChore();<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span><a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>  /**<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>   * Turn the catalog janitor on/off.<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>   * @param on<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>   * @return the previous state wrapped by a {@link CompletableFuture}<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   */<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>  CompletableFuture&lt;Boolean&gt; catalogJanitorSwitch(boolean on);<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span><a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>  /**<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * Query on the catalog janitor state.<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   * @return true if the catalog janitor is on, false otherwise. The return value will be<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>   *         wrapped by a {@link CompletableFuture}<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>   */<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>  CompletableFuture&lt;Boolean&gt; isCatalogJanitorEnabled();<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span><a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>  /**<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>   * Ask for a scan of the catalog table.<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>   * @return the number of entries cleaned. The return value will be wrapped by a<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>   *         {@link CompletableFuture}<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>   */<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>  CompletableFuture&lt;Integer&gt; runCatalogJanitor();<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span><a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>  /**<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>   * Execute the given coprocessor call on the master.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>   * &lt;p&gt;<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * The {@code stubMaker} is just a delegation to the {@code newStub} call. Usually it is only a<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   * one line lambda expression, like:<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>   *<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>   * &lt;pre&gt;<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>   * &lt;code&gt;<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>   * channel -&gt; xxxService.newStub(channel)<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>   * &lt;/code&gt;<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>   * &lt;/pre&gt;<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>   * @param stubMaker a delegation to the actual {@code newStub} call.<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>   * @param callable a delegation to the actual protobuf rpc call. See the comment of<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   *          {@link ServiceCaller} for more details.<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   * @param &lt;S&gt; the type of the asynchronous stub<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * @param &lt;R&gt; the type of the return value<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * @return the return value of the protobuf rpc call, wrapped by a {@link CompletableFuture}.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   * @see ServiceCaller<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   */<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>  &lt;S, R&gt; CompletableFuture&lt;R&gt; coprocessorService(Function&lt;RpcChannel, S&gt; stubMaker,<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>      ServiceCaller&lt;S, R&gt; callable);<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span><a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>  /**<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>   * Execute the given coprocessor call on the given region server.<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>   * &lt;p&gt;<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>   * The {@code stubMaker} is just a delegation to the {@code newStub} call. Usually it is only a<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>   * one line lambda expression, like:<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>   *<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>   * &lt;pre&gt;<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>   * &lt;code&gt;<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>   * channel -&gt; xxxService.newStub(channel)<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * &lt;/code&gt;<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * &lt;/pre&gt;<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   * @param stubMaker a delegation to the actual {@code newStub} call.<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>   * @param callable a delegation to the actual protobuf rpc call. See the comment of<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>   *          {@link ServiceCaller} for more details.<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>   * @param serverName the given region server<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>   * @param &lt;S&gt; the type of the asynchronous stub<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>   * @param &lt;R&gt; the type of the return value<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>   * @return the return value of the protobuf rpc call, wrapped by a {@link CompletableFuture}.<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>   * @see ServiceCaller<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   */<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>  &lt;S, R&gt; CompletableFuture&lt;R&gt; coprocessorService(Function&lt;RpcChannel, S&gt; stubMaker,<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>    ServiceCaller&lt;S, R&gt; callable, ServerName serverName);<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span><a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * List all the dead region servers.<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>   */<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>  default CompletableFuture&lt;List&lt;ServerName&gt;&gt; listDeadServers() {<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>    return this.getClusterMetrics(EnumSet.of(Option.DEAD_SERVERS))<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>        .thenApply(ClusterMetrics::getDeadServerNames);<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>  }<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span><a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>  /**<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>   * Clear dead region servers from master.<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>   * @param servers list of dead region servers.<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>   * @return - returns a list of servers that not cleared wrapped by a {@link CompletableFuture}.<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>   */<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>  CompletableFuture&lt;List&lt;ServerName&gt;&gt; clearDeadServers(final List&lt;ServerName&gt; servers);<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span><a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>  /**<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>   * Clear all the blocks corresponding to this table from BlockCache. For expert-admins. Calling<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>   * this API will drop all the cached blocks specific to a table from BlockCache. This can<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>   * significantly impact the query performance as the subsequent queries will have to retrieve the<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>   * blocks from underlying filesystem.<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>   * @param tableName table to clear block cache<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>   * @return CacheEvictionStats related to the eviction wrapped by a {@link CompletableFuture}.<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>   */<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>  CompletableFuture&lt;CacheEvictionStats&gt; clearBlockCache(final TableName tableName);<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span><a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>  /**<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>   * Create a new table by cloning the existent table schema.<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>   *<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>   * @param tableName name of the table to be cloned<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>   * @param newTableName name of the new table where the table will be created<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>   * @param preserveSplits True if the splits should be preserved<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>   */<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>  CompletableFuture&lt;Void&gt;  cloneTableSchema(final TableName tableName,<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>      final TableName newTableName, final boolean preserveSplits);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span><a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>  /**<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>   * Turn the compaction on or off. Disabling compactions will also interrupt any currently ongoing<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>   * compactions. This state is ephemeral. The setting will be lost on restart. Compaction<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>   * can also be enabled/disabled by modifying configuration hbase.regionserver.compaction.enabled<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   * in hbase-site.xml.<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   *<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   * @param switchState     Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>   * @param serverNamesList list of region servers.<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>   * @return Previous compaction states for region servers<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>   */<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>  CompletableFuture&lt;Map&lt;ServerName, Boolean&gt;&gt; compactionSwitch(boolean switchState,<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>      List&lt;String&gt; serverNamesList);<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span><a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>  /**<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>   * Switch the rpc throttle enabled state.<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>   * @return Previous rpc throttle enabled value<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>   */<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span>  CompletableFuture&lt;Boolean&gt; switchRpcThrottle(boolean enable);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span><a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>  /**<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * Get if the rpc throttle is enabled.<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * @return True if rpc throttle is enabled<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   */<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>  CompletableFuture&lt;Boolean&gt; isRpcThrottleEnabled();<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span><a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>  /**<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>   * Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>   * can be exceeded if region server has availble quota.<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>   * @param enable Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>   * @return Previous exceed throttle enabled value<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>   */<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>  CompletableFuture&lt;Boolean&gt; exceedThrottleQuotaSwitch(boolean enable);<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span><a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>  /**<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * Fetches the table sizes on the filesystem as tracked by the HBase Master.<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   */<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>  CompletableFuture&lt;Map&lt;TableName, Long&gt;&gt; getSpaceQuotaTableSizes();<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span><a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  /**<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>   * Fetches the observed {@link SpaceQuotaSnapshotView}s observed by a RegionServer.<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>   */<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>  CompletableFuture&lt;? extends Map&lt;TableName, ? extends SpaceQuotaSnapshotView&gt;&gt;<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>      getRegionServerSpaceQuotaSnapshots(ServerName serverName);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span><a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>  /**<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>   * Returns the Master's view of a quota on the given {@code namespace} or null if the Master has<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>   * no quota information on that namespace.<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   */<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>  CompletableFuture&lt;? extends SpaceQuotaSnapshotView&gt;<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>      getCurrentSpaceQuotaSnapshot(String namespace);<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span><a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>  /**<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   * Returns the Master's view of a quota on the given {@code tableName} or null if the Master has<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>   * no quota information on that table.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>   */<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>  CompletableFuture&lt;? extends SpaceQuotaSnapshotView&gt; getCurrentSpaceQuotaSnapshot(<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>      TableName tableName);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>  /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>   * Grants user specific permissions<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>   * @param userPermission user name and the specific permission<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * @param mergeExistingPermissions If set to false, later granted permissions will override<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   *          previous granted permissions. otherwise, it'll merge with previous granted<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   *          permissions.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   */<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>  CompletableFuture&lt;Void&gt; grant(UserPermission userPermission, boolean mergeExistingPermissions);<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span><a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>  /**<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>   * Revokes user specific permissions<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>   * @param userPermission user name and the specific permission<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>   */<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>  CompletableFuture&lt;Void&gt; revoke(UserPermission userPermission);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>  /**<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>   * Get the global/namespace/table permissions for user<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span>   * @param getUserPermissionsRequest A request contains which user, global, namespace or table<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>   *          permissions needed<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * @return The user and permission list<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   */<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>  CompletableFuture&lt;List&lt;UserPermission&gt;&gt;<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>      getUserPermissions(GetUserPermissionsRequest getUserPermissionsRequest);<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span><a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>  /**<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>   * Check if the user has specific permissions<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>   * @param userName the user name<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>   * @param permissions the specific permission list<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>   * @return True if user has the specific permissions<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>   */<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  CompletableFuture&lt;List&lt;Boolean&gt;&gt; hasUserPermissions(String userName,<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      List&lt;Permission&gt; permissions);<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>  /**<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>   * Check if call user has specific permissions<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * @param permissions the specific permission list<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   * @return True if user has the specific permissions<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>   */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>  default CompletableFuture&lt;List&lt;Boolean&gt;&gt; hasUserPermissions(List&lt;Permission&gt; permissions) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>    return hasUserPermissions(null, permissions);<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>  }<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span><a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>  /**<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * Turn on or off the auto snapshot cleanup based on TTL.<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   * &lt;p/&gt;<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>   * Notice that, the method itself is always non-blocking, which means it will always return<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>   * immediately. The {@code sync} parameter only effects when will we complete the returned<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>   * {@link CompletableFuture}.<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   *<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>   * @param on Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable.<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>   * @param sync If &lt;code&gt;true&lt;/code&gt;, it waits until current snapshot cleanup is completed,<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>   *   if outstanding.<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>   * @return Previous auto snapshot cleanup value wrapped by a {@link CompletableFuture}.<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>   */<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  CompletableFuture&lt;Boolean&gt; snapshotCleanupSwitch(boolean on, boolean sync);<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span><a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>  /**<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * Query the current state of the auto snapshot cleanup based on TTL.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   *<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   * @return true if the auto snapshot cleanup is enabled, false otherwise.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>   *   The return value will be wrapped by a {@link CompletableFuture}.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>   */<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>  CompletableFuture&lt;Boolean&gt; isSnapshotCleanupEnabled();<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span><a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>}<a name="line.1509"></a>
 
 
 
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html b/apidocs/src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html
index a3df295..1d4b2f6 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/snapshot/ExportSnapshot.html
@@ -975,183 +975,182 @@
 <span class="sourceLineNo">967</span>    Configuration srcConf = HBaseConfiguration.createClusterConf(conf, null, CONF_SOURCE_PREFIX);<a name="line.967"></a>
 <span class="sourceLineNo">968</span>    srcConf.setBoolean("fs." + inputRoot.toUri().getScheme() + ".impl.disable.cache", true);<a name="line.968"></a>
 <span class="sourceLineNo">969</span>    FileSystem inputFs = FileSystem.get(inputRoot.toUri(), srcConf);<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    LOG.debug("inputFs=" + inputFs.getUri().toString() + " inputRoot=" + inputRoot);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    Configuration destConf = HBaseConfiguration.createClusterConf(conf, null, CONF_DEST_PREFIX);<a name="line.971"></a>
-<span class="sourceLineNo">972</span>    destConf.setBoolean("fs." + outputRoot.toUri().getScheme() + ".impl.disable.cache", true);<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    FileSystem outputFs = FileSystem.get(outputRoot.toUri(), destConf);<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    LOG.debug("outputFs=" + outputFs.getUri().toString() + " outputRoot=" + outputRoot.toString());<a name="line.974"></a>
-<span class="sourceLineNo">975</span><a name="line.975"></a>
-<span class="sourceLineNo">976</span>    boolean skipTmp = conf.getBoolean(CONF_SKIP_TMP, false) ||<a name="line.976"></a>
-<span class="sourceLineNo">977</span>        conf.get(SnapshotDescriptionUtils.SNAPSHOT_WORKING_DIR) != null;<a name="line.977"></a>
-<span class="sourceLineNo">978</span><a name="line.978"></a>
-<span class="sourceLineNo">979</span>    Path snapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotName, inputRoot);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    Path snapshotTmpDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(targetName, outputRoot,<a name="line.980"></a>
-<span class="sourceLineNo">981</span>        destConf);<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    Path outputSnapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(targetName, outputRoot);<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    Path initialOutputSnapshotDir = skipTmp ? outputSnapshotDir : snapshotTmpDir;<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // Find the necessary directory which need to change owner and group<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    Path needSetOwnerDir = SnapshotDescriptionUtils.getSnapshotRootDir(outputRoot);<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    if (outputFs.exists(needSetOwnerDir)) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      if (skipTmp) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        needSetOwnerDir = outputSnapshotDir;<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      } else {<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        needSetOwnerDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(outputRoot, destConf);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>        if (outputFs.exists(needSetOwnerDir)) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          needSetOwnerDir = snapshotTmpDir;<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>      }<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    }<a name="line.996"></a>
-<span class="sourceLineNo">997</span><a name="line.997"></a>
-<span class="sourceLineNo">998</span>    // Check if the snapshot already exists<a name="line.998"></a>
-<span class="sourceLineNo">999</span>    if (outputFs.exists(outputSnapshotDir)) {<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      if (overwrite) {<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>        if (!outputFs.delete(outputSnapshotDir, true)) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>          System.err.println("Unable to remove existing snapshot directory: " + outputSnapshotDir);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>          return 1;<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>        }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>      } else {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>        System.err.println("The snapshot '" + targetName +<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>          "' already exists in the destination: " + outputSnapshotDir);<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        return 1;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      }<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    }<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span><a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    if (!skipTmp) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      // Check if the snapshot already in-progress<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      if (outputFs.exists(snapshotTmpDir)) {<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>        if (overwrite) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>          if (!outputFs.delete(snapshotTmpDir, true)) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>            System.err.println("Unable to remove existing snapshot tmp directory: "+snapshotTmpDir);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>            return 1;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>          }<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>        } else {<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>          System.err.println("A snapshot with the same name '"+ targetName +"' may be in-progress");<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>          System.err.println("Please check "+snapshotTmpDir+". If the snapshot has completed, ");<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>          System.err.println("consider removing "+snapshotTmpDir+" by using the -overwrite option");<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>          return 1;<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>        }<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>      }<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>    }<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span><a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>    // Step 1 - Copy fs1:/.snapshot/&lt;snapshot&gt; to  fs2:/.snapshot/.tmp/&lt;snapshot&gt;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>    // The snapshot references must be copied before the hfiles otherwise the cleaner<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    // will remove them because they are unreferenced.<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    List&lt;Path&gt; travesedPaths = new ArrayList&lt;&gt;();<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    boolean copySucceeded = false;<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    try {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      LOG.info("Copy Snapshot Manifest from " + snapshotDir + " to " + initialOutputSnapshotDir);<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      travesedPaths =<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>          FSUtils.copyFilesParallel(inputFs, snapshotDir, outputFs, initialOutputSnapshotDir, conf,<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              conf.getInt(CONF_COPY_MANIFEST_THREADS, DEFAULT_COPY_MANIFEST_THREADS));<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      copySucceeded = true;<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>    } catch (IOException e) {<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>      throw new ExportSnapshotException("Failed to copy the snapshot directory: from=" +<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>        snapshotDir + " to=" + initialOutputSnapshotDir, e);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    } finally {<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>      if (copySucceeded) {<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>        if (filesUser != null || filesGroup != null) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>          LOG.warn((filesUser == null ? "" : "Change the owner of " + needSetOwnerDir + " to "<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>              + filesUser)<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>              + (filesGroup == null ? "" : ", Change the group of " + needSetOwnerDir + " to "<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>                  + filesGroup));<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>          setOwnerParallel(outputFs, filesUser, filesGroup, conf, travesedPaths);<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>        }<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>        if (filesMode &gt; 0) {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>          LOG.warn("Change the permission of " + needSetOwnerDir + " to " + filesMode);<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>          setPermissionParallel(outputFs, (short)filesMode, travesedPaths, conf);<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>        }<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>    }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    // Write a new .snapshotinfo if the target name is different from the source name<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>    if (!targetName.equals(snapshotName)) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      SnapshotDescription snapshotDesc =<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        SnapshotDescriptionUtils.readSnapshotInfo(inputFs, snapshotDir)<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>          .toBuilder()<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>          .setName(targetName)<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>          .build();<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      SnapshotDescriptionUtils.writeSnapshotInfo(snapshotDesc, initialOutputSnapshotDir, outputFs);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>      if (filesUser != null || filesGroup != null) {<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>        outputFs.setOwner(new Path(initialOutputSnapshotDir,<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          SnapshotDescriptionUtils.SNAPSHOTINFO_FILE), filesUser, filesGroup);<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>      }<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>      if (filesMode &gt; 0) {<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>        outputFs.setPermission(new Path(initialOutputSnapshotDir,<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>          SnapshotDescriptionUtils.SNAPSHOTINFO_FILE), new FsPermission((short)filesMode));<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>    }<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    // Step 2 - Start MR Job to copy files<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    // The snapshot references must be copied before the files otherwise the files gets removed<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    // by the HFileArchiver, since they have no references.<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>    try {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      runCopyJob(inputRoot, outputRoot, snapshotName, snapshotDir, verifyChecksum,<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>                 filesUser, filesGroup, filesMode, mappers, bandwidthMB);<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span><a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      LOG.info("Finalize the Snapshot Export");<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      if (!skipTmp) {<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>        // Step 3 - Rename fs2:/.snapshot/.tmp/&lt;snapshot&gt; fs2:/.snapshot/&lt;snapshot&gt;<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>        if (!outputFs.rename(snapshotTmpDir, outputSnapshotDir)) {<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>          throw new ExportSnapshotException("Unable to rename snapshot directory from=" +<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>            snapshotTmpDir + " to=" + outputSnapshotDir);<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>        }<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>      }<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span><a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>      // Step 4 - Verify snapshot integrity<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>      if (verifyTarget) {<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>        LOG.info("Verify snapshot integrity");<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>        verifySnapshot(destConf, outputFs, outputRoot, outputSnapshotDir);<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span><a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      LOG.info("Export Completed: " + targetName);<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      return 0;<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    } catch (Exception e) {<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      LOG.error("Snapshot export failed", e);<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      if (!skipTmp) {<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>        outputFs.delete(snapshotTmpDir, true);<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>      }<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      outputFs.delete(outputSnapshotDir, true);<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      return 1;<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>    } finally {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>      IOUtils.closeStream(inputFs);<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>      IOUtils.closeStream(outputFs);<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>    }<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  }<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span><a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>  @Override<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>  protected void printUsage() {<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>    super.printUsage();<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>    System.out.println("\n"<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>        + "Examples:\n"<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>        + "  hbase snapshot export \\\n"<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>        + "    --snapshot MySnapshot --copy-to hdfs://srv2:8082/hbase \\\n"<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>        + "    --chuser MyUser --chgroup MyGroup --chmod 700 --mappers 16\n"<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>        + "\n"<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>        + "  hbase snapshot export \\\n"<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>        + "    --snapshot MySnapshot --copy-from hdfs://srv2:8082/hbase \\\n"<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>        + "    --copy-to hdfs://srv1:50070/hbase");<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>  }<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span><a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>  @Override protected void addOptions() {<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>    addRequiredOption(Options.SNAPSHOT);<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    addOption(Options.COPY_TO);<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    addOption(Options.COPY_FROM);<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    addOption(Options.TARGET_NAME);<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    addOption(Options.NO_CHECKSUM_VERIFY);<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>    addOption(Options.NO_TARGET_VERIFY);<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    addOption(Options.OVERWRITE);<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    addOption(Options.CHUSER);<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>    addOption(Options.CHGROUP);<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>    addOption(Options.CHMOD);<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>    addOption(Options.MAPPERS);<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>    addOption(Options.BANDWIDTH);<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>  }<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span><a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>  public static void main(String[] args) {<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>    new ExportSnapshot().doStaticMain(args);<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>  }<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>}<a name="line.1146"></a>
+<span class="sourceLineNo">970</span>    Configuration destConf = HBaseConfiguration.createClusterConf(conf, null, CONF_DEST_PREFIX);<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    destConf.setBoolean("fs." + outputRoot.toUri().getScheme() + ".impl.disable.cache", true);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>    FileSystem outputFs = FileSystem.get(outputRoot.toUri(), destConf);<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    boolean skipTmp = conf.getBoolean(CONF_SKIP_TMP, false) ||<a name="line.973"></a>
+<span class="sourceLineNo">974</span>        conf.get(SnapshotDescriptionUtils.SNAPSHOT_WORKING_DIR) != null;<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    Path snapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotName, inputRoot);<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    Path snapshotTmpDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(targetName, outputRoot,<a name="line.976"></a>
+<span class="sourceLineNo">977</span>        destConf);<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    Path outputSnapshotDir = SnapshotDescriptionUtils.getCompletedSnapshotDir(targetName, outputRoot);<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    Path initialOutputSnapshotDir = skipTmp ? outputSnapshotDir : snapshotTmpDir;<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    LOG.debug("inputFs={}, inputRoot={}", inputFs.getUri().toString(), inputRoot);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>    LOG.debug("outputFs={}, outputRoot={}, outputFs.getUri().toString(), " +<a name="line.981"></a>
+<span class="sourceLineNo">982</span>        "initialOutputSnapshotDir={}", outputRoot.toString(), skipTmp, initialOutputSnapshotDir);<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>    // Find the necessary directory which need to change owner and group<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    Path needSetOwnerDir = SnapshotDescriptionUtils.getSnapshotRootDir(outputRoot);<a name="line.985"></a>
+<span class="sourceLineNo">986</span>    if (outputFs.exists(needSetOwnerDir)) {<a name="line.986"></a>
+<span class="sourceLineNo">987</span>      if (skipTmp) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>        needSetOwnerDir = outputSnapshotDir;<a name="line.988"></a>
+<span class="sourceLineNo">989</span>      } else {<a name="line.989"></a>
+<span class="sourceLineNo">990</span>        needSetOwnerDir = SnapshotDescriptionUtils.getWorkingSnapshotDir(outputRoot, destConf);<a name="line.990"></a>
+<span class="sourceLineNo">991</span>        if (outputFs.exists(needSetOwnerDir)) {<a name="line.991"></a>
+<span class="sourceLineNo">992</span>          needSetOwnerDir = snapshotTmpDir;<a name="line.992"></a>
+<span class="sourceLineNo">993</span>        }<a name="line.993"></a>
+<span class="sourceLineNo">994</span>      }<a name="line.994"></a>
+<span class="sourceLineNo">995</span>    }<a name="line.995"></a>
+<span class="sourceLineNo">996</span><a name="line.996"></a>
+<span class="sourceLineNo">997</span>    // Check if the snapshot already exists<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    if (outputFs.exists(outputSnapshotDir)) {<a name="line.998"></a>
+<span class="sourceLineNo">999</span>      if (overwrite) {<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>        if (!outputFs.delete(outputSnapshotDir, true)) {<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>          System.err.println("Unable to remove existing snapshot directory: " + outputSnapshotDir);<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>          return 1;<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>        }<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      } else {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>        System.err.println("The snapshot '" + targetName +<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>          "' already exists in the destination: " + outputSnapshotDir);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>        return 1;<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      }<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    }<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span><a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>    if (!skipTmp) {<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      // Check if the snapshot already in-progress<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>      if (outputFs.exists(snapshotTmpDir)) {<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        if (overwrite) {<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>          if (!outputFs.delete(snapshotTmpDir, true)) {<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>            System.err.println("Unable to remove existing snapshot tmp directory: "+snapshotTmpDir);<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>            return 1;<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>          }<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>        } else {<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>          System.err.println("A snapshot with the same name '"+ targetName +"' may be in-progress");<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>          System.err.println("Please check "+snapshotTmpDir+". If the snapshot has completed, ");<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>          System.err.println("consider removing "+snapshotTmpDir+" by using the -overwrite option");<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>          return 1;<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>        }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      }<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    // Step 1 - Copy fs1:/.snapshot/&lt;snapshot&gt; to  fs2:/.snapshot/.tmp/&lt;snapshot&gt;<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    // The snapshot references must be copied before the hfiles otherwise the cleaner<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    // will remove them because they are unreferenced.<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>    List&lt;Path&gt; travesedPaths = new ArrayList&lt;&gt;();<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    boolean copySucceeded = false;<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>    try {<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      LOG.info("Copy Snapshot Manifest from " + snapshotDir + " to " + initialOutputSnapshotDir);<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      travesedPaths =<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>          FSUtils.copyFilesParallel(inputFs, snapshotDir, outputFs, initialOutputSnapshotDir, conf,<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>              conf.getInt(CONF_COPY_MANIFEST_THREADS, DEFAULT_COPY_MANIFEST_THREADS));<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>      copySucceeded = true;<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>    } catch (IOException e) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>      throw new ExportSnapshotException("Failed to copy the snapshot directory: from=" +<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        snapshotDir + " to=" + initialOutputSnapshotDir, e);<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>    } finally {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      if (copySucceeded) {<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>        if (filesUser != null || filesGroup != null) {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          LOG.warn((filesUser == null ? "" : "Change the owner of " + needSetOwnerDir + " to "<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>              + filesUser)<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>              + (filesGroup == null ? "" : ", Change the group of " + needSetOwnerDir + " to "<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>                  + filesGroup));<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>          setOwnerParallel(outputFs, filesUser, filesGroup, conf, travesedPaths);<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>        }<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>        if (filesMode &gt; 0) {<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>          LOG.warn("Change the permission of " + needSetOwnerDir + " to " + filesMode);<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>          setPermissionParallel(outputFs, (short)filesMode, travesedPaths, conf);<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>        }<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    }<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span><a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    // Write a new .snapshotinfo if the target name is different from the source name<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>    if (!targetName.equals(snapshotName)) {<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      SnapshotDescription snapshotDesc =<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>        SnapshotDescriptionUtils.readSnapshotInfo(inputFs, snapshotDir)<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          .toBuilder()<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>          .setName(targetName)<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>          .build();<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>      SnapshotDescriptionUtils.writeSnapshotInfo(snapshotDesc, initialOutputSnapshotDir, outputFs);<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>      if (filesUser != null || filesGroup != null) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>        outputFs.setOwner(new Path(initialOutputSnapshotDir,<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          SnapshotDescriptionUtils.SNAPSHOTINFO_FILE), filesUser, filesGroup);<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>      }<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>      if (filesMode &gt; 0) {<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>        outputFs.setPermission(new Path(initialOutputSnapshotDir,<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>          SnapshotDescriptionUtils.SNAPSHOTINFO_FILE), new FsPermission((short)filesMode));<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      }<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>    }<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span><a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>    // Step 2 - Start MR Job to copy files<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>    // The snapshot references must be copied before the files otherwise the files gets removed<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>    // by the HFileArchiver, since they have no references.<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>    try {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>      runCopyJob(inputRoot, outputRoot, snapshotName, snapshotDir, verifyChecksum,<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>                 filesUser, filesGroup, filesMode, mappers, bandwidthMB);<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span><a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      LOG.info("Finalize the Snapshot Export");<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>      if (!skipTmp) {<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>        // Step 3 - Rename fs2:/.snapshot/.tmp/&lt;snapshot&gt; fs2:/.snapshot/&lt;snapshot&gt;<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>        if (!outputFs.rename(snapshotTmpDir, outputSnapshotDir)) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>          throw new ExportSnapshotException("Unable to rename snapshot directory from=" +<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>            snapshotTmpDir + " to=" + outputSnapshotDir);<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>        }<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>      }<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span><a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>      // Step 4 - Verify snapshot integrity<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>      if (verifyTarget) {<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>        LOG.info("Verify snapshot integrity");<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>        verifySnapshot(destConf, outputFs, outputRoot, outputSnapshotDir);<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      }<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span><a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>      LOG.info("Export Completed: " + targetName);<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>      return 0;<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    } catch (Exception e) {<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>      LOG.error("Snapshot export failed", e);<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>      if (!skipTmp) {<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>        outputFs.delete(snapshotTmpDir, true);<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>      }<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>      outputFs.delete(outputSnapshotDir, true);<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      return 1;<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>    } finally {<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>      IOUtils.closeStream(inputFs);<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>      IOUtils.closeStream(outputFs);<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>    }<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>  }<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span><a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>  @Override<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>  protected void printUsage() {<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>    super.printUsage();<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>    System.out.println("\n"<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>        + "Examples:\n"<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        + "  hbase snapshot export \\\n"<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>        + "    --snapshot MySnapshot --copy-to hdfs://srv2:8082/hbase \\\n"<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>        + "    --chuser MyUser --chgroup MyGroup --chmod 700 --mappers 16\n"<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>        + "\n"<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>        + "  hbase snapshot export \\\n"<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>        + "    --snapshot MySnapshot --copy-from hdfs://srv2:8082/hbase \\\n"<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>        + "    --copy-to hdfs://srv1:50070/hbase");<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>  }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span><a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  @Override protected void addOptions() {<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    addRequiredOption(Options.SNAPSHOT);<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>    addOption(Options.COPY_TO);<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>    addOption(Options.COPY_FROM);<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    addOption(Options.TARGET_NAME);<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>    addOption(Options.NO_CHECKSUM_VERIFY);<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>    addOption(Options.NO_TARGET_VERIFY);<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>    addOption(Options.OVERWRITE);<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    addOption(Options.CHUSER);<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>    addOption(Options.CHGROUP);<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>    addOption(Options.CHMOD);<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>    addOption(Options.MAPPERS);<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>    addOption(Options.BANDWIDTH);<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>  }<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span><a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>  public static void main(String[] args) {<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>    new ExportSnapshot().doStaticMain(args);<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>  }<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>}<a name="line.1145"></a>
 
 
 
diff --git a/book.html b/book.html
index 42a468c..762d631 100644
--- a/book.html
+++ b/book.html
@@ -44472,7 +44472,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2020-02-13 14:44:06 UTC
+Last updated 2020-02-14 14:30:25 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 053a9c0..7b5842a 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -172,7 +172,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-02-13</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-02-14</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index bc505cd..49d69e0 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -169,7 +169,7 @@
 <td>4190</td>
 <td>0</td>
 <td>0</td>
-<td>10484</td></tr></table></div>
+<td>10485</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -6714,781 +6714,786 @@
 <td>0</td>
 <td>5</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.snapshot.TestExportSnapshotWithTemporaryDirectory.java">org/apache/hadoop/hbase/snapshot/TestExportSnapshotWithTemporaryDirectory.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.snapshot.TestExportSnapshotV1NoCluster.java">org/apache/hadoop/hbase/snapshot/TestExportSnapshotV1NoCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
 <tr class="b">
-<td><a href="#org.apache.hadoop.hbase.snapshot.TestFlushSnapshotFromClient.java">org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.snapshot.TestExportSnapshotWithTemporaryDirectory.java">org/apache/hadoop/hbase/snapshot/TestExportSnapshotWithTemporaryDirectory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
 <tr class="a">
+<td><a href="#org.apache.hadoop.hbase.snapshot.TestFlushSnapshotFromClient.java">org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java</a></td>
+<td>0</td>
+<td>0</td>
+<td>1</td></tr>
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList.java">org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestBigLinkedListWithVisibility.java">org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestLoadAndVerify.java">org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>71</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestReplication.java">org/apache/hadoop/hbase/test/IntegrationTestReplication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestTimeBoundedMultiGetRequestsWithRegionReplicas.java">org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedMultiGetRequestsWithRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestTimeBoundedRequestsWithRegionReplicas.java">org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedRequestsWithRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.test.IntegrationTestWithCellVisibilityLoadAndVerify.java">org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.Canary.java">org/apache/hadoop/hbase/tool/Canary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.tool.CanaryTool.java">org/apache/hadoop/hbase/tool/CanaryTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.MapreduceTestingShim.java">org/apache/hadoop/hbase/tool/MapreduceTestingShim.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.tool.TestBulkLoadHFilesSplitRecovery.java">org/apache/hadoop/hbase/tool/TestBulkLoadHFilesSplitRecovery.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.TestCanaryTool.java">org/apache/hadoop/hbase/tool/TestCanaryTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.trace.IntegrationTestSendTraceRequests.java">org/apache/hadoop/hbase/trace/IntegrationTestSendTraceRequests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.trace.TraceTree.java">org/apache/hadoop/hbase/trace/TraceTree.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.AbstractFileStatusFilter.java">org/apache/hadoop/hbase/util/AbstractFileStatusFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.AbstractHBaseTool.java">org/apache/hadoop/hbase/util/AbstractHBaseTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Addressing.java">org/apache/hadoop/hbase/util/Addressing.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.AvlUtil.java">org/apache/hadoop/hbase/util/AvlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BaseTestHBaseFsck.java">org/apache/hadoop/hbase/util/BaseTestHBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BloomContext.java">org/apache/hadoop/hbase/util/BloomContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilter.java">org/apache/hadoop/hbase/util/BloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterChunk.java">org/apache/hadoop/hbase/util/BloomFilterChunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterFactory.java">org/apache/hadoop/hbase/util/BloomFilterFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterUtil.java">org/apache/hadoop/hbase/util/BloomFilterUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.BloomFilterWriter.java">org/apache/hadoop/hbase/util/BloomFilterWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue.java">org/apache/hadoop/hbase/util/BoundedPriorityBlockingQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ByteBufferUtils.java">org/apache/hadoop/hbase/util/ByteBufferUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>45</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Bytes.java">org/apache/hadoop/hbase/util/Bytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>83</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ChecksumType.java">org/apache/hadoop/hbase/util/ChecksumType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ClassSize.java">org/apache/hadoop/hbase/util/ClassSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Classes.java">org/apache/hadoop/hbase/util/Classes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.CollectionBackedScanner.java">org/apache/hadoop/hbase/util/CollectionBackedScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.CompressionTest.java">org/apache/hadoop/hbase/util/CompressionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ConcurrentMapUtils.java">org/apache/hadoop/hbase/util/ConcurrentMapUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ConfigurationUtil.java">org/apache/hadoop/hbase/util/ConfigurationUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ConnectionCache.java">org/apache/hadoop/hbase/util/ConnectionCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ConstantDelayQueue.java">org/apache/hadoop/hbase/util/ConstantDelayQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.CoprocessorClassLoader.java">org/apache/hadoop/hbase/util/CoprocessorClassLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.DirectMemoryUtils.java">org/apache/hadoop/hbase/util/DirectMemoryUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.EncryptionTest.java">org/apache/hadoop/hbase/util/EncryptionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.EnvironmentEdgeManager.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FSHDFSUtils.java">org/apache/hadoop/hbase/util/FSHDFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FSTableDescriptors.java">org/apache/hadoop/hbase/util/FSTableDescriptors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FSUtils.java">org/apache/hadoop/hbase/util/FSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>65</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FSVisitor.java">org/apache/hadoop/hbase/util/FSVisitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FileStatusFilter.java">org/apache/hadoop/hbase/util/FileStatusFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.GetJavaProperty.java">org/apache/hadoop/hbase/util/GetJavaProperty.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseConfTool.java">org/apache/hadoop/hbase/util/HBaseConfTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseFsck.java">org/apache/hadoop/hbase/util/HBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>74</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseFsckRepair.java">org/apache/hadoop/hbase/util/HBaseFsckRepair.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseHomePath.java">org/apache/hadoop/hbase/util/HBaseHomePath.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HFileArchiveUtil.java">org/apache/hadoop/hbase/util/HFileArchiveUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HFileTestUtil.java">org/apache/hadoop/hbase/util/HFileTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Hash.java">org/apache/hadoop/hbase/util/Hash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.HashKey.java">org/apache/hadoop/hbase/util/HashKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HashedBytes.java">org/apache/hadoop/hbase/util/HashedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.JVM.java">org/apache/hadoop/hbase/util/JVM.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.JVMClusterUtil.java">org/apache/hadoop/hbase/util/JVMClusterUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.JenkinsHash.java">org/apache/hadoop/hbase/util/JenkinsHash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.JvmPauseMonitor.java">org/apache/hadoop/hbase/util/JvmPauseMonitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.KeyLocker.java">org/apache/hadoop/hbase/util/KeyLocker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.LeaseNotRecoveredException.java">org/apache/hadoop/hbase/util/LeaseNotRecoveredException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.LoadTestDataGeneratorWithMOB.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithMOB.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.LoadTestDataGeneratorWithTags.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.LoadTestTool.java">org/apache/hadoop/hbase/util/LoadTestTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MD5Hash.java">org/apache/hadoop/hbase/util/MD5Hash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ManualEnvironmentEdge.java">org/apache/hadoop/hbase/util/ManualEnvironmentEdge.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MapreduceDependencyClasspathTool.java">org/apache/hadoop/hbase/util/MapreduceDependencyClasspathTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MockServer.java">org/apache/hadoop/hbase/util/MockServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ModifyRegionUtils.java">org/apache/hadoop/hbase/util/ModifyRegionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedAction.java">org/apache/hadoop/hbase/util/MultiThreadedAction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedReader.java">org/apache/hadoop/hbase/util/MultiThreadedReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedReaderWithACL.java">org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedUpdater.java">org/apache/hadoop/hbase/util/MultiThreadedUpdater.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MultiThreadedWriter.java">org/apache/hadoop/hbase/util/MultiThreadedWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.MunkresAssignment.java">org/apache/hadoop/hbase/util/MunkresAssignment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.MurmurHash3.java">org/apache/hadoop/hbase/util/MurmurHash3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.NettyEventLoopGroupConfig.java">org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.OrderedBytes.java">org/apache/hadoop/hbase/util/OrderedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Pair.java">org/apache/hadoop/hbase/util/Pair.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.PairOfSameType.java">org/apache/hadoop/hbase/util/PairOfSameType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.PoolMap.java">org/apache/hadoop/hbase/util/PoolMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.PositionedByteRange.java">org/apache/hadoop/hbase/util/PositionedByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.PrettyPrinter.java">org/apache/hadoop/hbase/util/PrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ProcessBasedLocalHBaseCluster.java">org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ReflectionUtils.java">org/apache/hadoop/hbase/util/ReflectionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.RegionMover.java">org/apache/hadoop/hbase/util/RegionMover.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.RegionSplitCalculator.java">org/apache/hadoop/hbase/util/RegionSplitCalculator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.RegionSplitter.java">org/apache/hadoop/hbase/util/RegionSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.RetryCounter.java">org/apache/hadoop/hbase/util/RetryCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.RollingStatCalculator.java">org/apache/hadoop/hbase/util/RollingStatCalculator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ServerCommandLine.java">org/apache/hadoop/hbase/util/ServerCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ServerRegionReplicaUtil.java">org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.SimpleByteRange.java">org/apache/hadoop/hbase/util/SimpleByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.SimpleMutableByteRange.java">org/apache/hadoop/hbase/util/SimpleMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.SimplePositionedByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.SimplePositionedMutableByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.StealJobQueue.java">org/apache/hadoop/hbase/util/StealJobQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.StoppableImplementation.java">org/apache/hadoop/hbase/util/StoppableImplementation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestBloomFilterChunk.java">org/apache/hadoop/hbase/util/TestBloomFilterChunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestCompressionTest.java">org/apache/hadoop/hbase/util/TestCompressionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestCoprocessorScanPolicy.java">org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestFSTableDescriptors.java">org/apache/hadoop/hbase/util/TestFSTableDescriptors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestFSUtils.java">org/apache/hadoop/hbase/util/TestFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestHFileArchiveUtil.java">org/apache/hadoop/hbase/util/TestHFileArchiveUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestIdLock.java">org/apache/hadoop/hbase/util/TestIdLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestIdReadWriteLockWithObjectPool.java">org/apache/hadoop/hbase/util/TestIdReadWriteLockWithObjectPool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestMiniClusterLoadEncoded.java">org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestMiniClusterLoadSequential.java">org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestRegionSplitter.java">org/apache/hadoop/hbase/util/TestRegionSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestSortedList.java">org/apache/hadoop/hbase/util/TestSortedList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.Threads.java">org/apache/hadoop/hbase/util/Threads.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Triple.java">org/apache/hadoop/hbase/util/Triple.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.UnsafeAccess.java">org/apache/hadoop/hbase/util/UnsafeAccess.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.UnsafeAvailChecker.java">org/apache/hadoop/hbase/util/UnsafeAvailChecker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.VersionInfo.java">org/apache/hadoop/hbase/util/VersionInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Writables.java">org/apache/hadoop/hbase/util/Writables.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ZKDataMigrator.java">org/apache/hadoop/hbase/util/ZKDataMigrator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.compaction.TestMajorCompactor.java">org/apache/hadoop/hbase/util/compaction/TestMajorCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker.java">org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.HbckTestingUtil.java">org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.OfflineMetaRebuildTestCore.java">org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.hbck.ReplicationChecker.java">org/apache/hadoop/hbase/util/hbck/ReplicationChecker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.test.LoadTestDataGenerator.java">org/apache/hadoop/hbase/util/test/LoadTestDataGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.test.LoadTestDataGeneratorWithACL.java">org/apache/hadoop/hbase/util/test/LoadTestDataGeneratorWithACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.AbstractFSWALProvider.java">org/apache/hadoop/hbase/wal/AbstractFSWALProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.BoundedGroupingStrategy.java">org/apache/hadoop/hbase/wal/BoundedGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.DisabledWALProvider.java">org/apache/hadoop/hbase/wal/DisabledWALProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.IOTestProvider.java">org/apache/hadoop/hbase/wal/IOTestProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.NamespaceGroupingStrategy.java">org/apache/hadoop/hbase/wal/NamespaceGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.NettyAsyncFSWALConfigHelper.java">org/apache/hadoop/hbase/wal/NettyAsyncFSWALConfigHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestBoundedRegionGroupingStrategy.java">org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestFSHLogProvider.java">org/apache/hadoop/hbase/wal/TestFSHLogProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALFactory.java">org/apache/hadoop/hbase/wal/TestWALFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALFiltering.java">org/apache/hadoop/hbase/wal/TestWALFiltering.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALMethods.java">org/apache/hadoop/hbase/wal/TestWALMethods.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALOpenAfterDNRollingStart.java">org/apache/hadoop/hbase/wal/TestWALOpenAfterDNRollingStart.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALRootDir.java">org/apache/hadoop/hbase/wal/TestWALRootDir.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.TestWALSplit.java">org/apache/hadoop/hbase/wal/TestWALSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WAL.java">org/apache/hadoop/hbase/wal/WAL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALFactory.java">org/apache/hadoop/hbase/wal/WALFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WALKey.java">org/apache/hadoop/hbase/wal/WALKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALKeyImpl.java">org/apache/hadoop/hbase/wal/WALKeyImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.wal.WALPerformanceEvaluation.java">org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.wal.WALSplitUtil.java">org/apache/hadoop/hbase/wal/WALSplitUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.java">org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZKConfig.java">org/apache/hadoop/hbase/zookeeper/ZKConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZKMetadata.java">org/apache/hadoop/hbase/zookeeper/ZKMetadata.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZNodePaths.java">org/apache/hadoop/hbase/zookeeper/ZNodePaths.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZooKeeperHelper.java">org/apache/hadoop/hbase/zookeeper/ZooKeeperHelper.java</a></td>
 <td>0</td>
 <td>0</td>
@@ -7496,62 +7501,62 @@
 <div class="section">
 <h2><a name="Rules"></a>Rules</h2>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Category</th>
 <th>Rule</th>
 <th>Violations</th>
 <th>Severity</th></tr>
-<tr class="b">
+<tr class="a">
 <td>annotation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
 <td>10</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>blocks</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#EmptyBlock">EmptyBlock</a></td>
 <td>35</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#LeftCurly">LeftCurly</a></td>
 <td>125</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#NeedBraces">NeedBraces</a></td>
 <td>1316</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>coding</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EmptyStatement">EmptyStatement</a></td>
 <td>20</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EqualsHashCode">EqualsHashCode</a></td>
 <td>2</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#InnerAssignment">InnerAssignment</a></td>
 <td>67</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>design</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#FinalClass">FinalClass</a></td>
 <td>45</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#HideUtilityClassConstructor">HideUtilityClassConstructor</a></td>
 <td>84</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#InterfaceIsType">InterfaceIsType</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#VisibilityModifier">VisibilityModifier</a>
 <ul>
@@ -7560,12 +7565,12 @@
 <li>allowPublicImmutableFields: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>116</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>imports</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#AvoidStarImport">AvoidStarImport</a></td>
 <td>24</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#ImportOrder">ImportOrder</a>
 <ul>
@@ -7575,19 +7580,19 @@
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
 <td>792</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#RedundantImport">RedundantImport</a></td>
 <td>16</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>14</td>
+<td>15</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>indentation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_indentation.html#Indentation">Indentation</a>
 <ul>
@@ -7598,34 +7603,34 @@
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
 <td>3048</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>javadoc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
 <td>612</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
 <td>2652</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>misc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#ArrayTypeStyle">ArrayTypeStyle</a></td>
 <td>112</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#SuppressWarningsHolder">SuppressWarningsHolder</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#UpperEll">UpperEll</a></td>
 <td>23</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>sizes</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#LineLength">LineLength</a>
 <ul>
@@ -7633,22 +7638,22 @@
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
 <td>1012</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#MethodLength">MethodLength</a></td>
 <td>57</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>whitespace</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter">FileTabCharacter</a></td>
 <td>5</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#MethodParamPad">MethodParamPad</a></td>
 <td>138</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#ParenPad">ParenPad</a></td>
 <td>157</td>
@@ -7658,49 +7663,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AcidGuaranteesTestTool.java">org/apache/hadoop/hbase/AcidGuaranteesTestTool.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>138</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>163</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>215</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>216</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>282</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>283</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
@@ -7709,109 +7714,109 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AsyncMetaTableAccessor.java">org/apache/hadoop/hbase/AsyncMetaTableAccessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>60</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>98</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>125</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>160</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>173</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>198</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>227</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>258</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>271</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>380</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>382</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>390</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>398</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>443</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>448</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>466</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -7820,25 +7825,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ByteBufferKeyOnlyKeyValue.java">org/apache/hadoop/hbase/ByteBufferKeyOnlyKeyValue.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -7847,13 +7852,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.Cell.java">org/apache/hadoop/hbase/Cell.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -7862,31 +7867,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellBuilderFactory.java">org/apache/hadoop/hbase/CellBuilderFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -7895,169 +7900,169 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellUtil.java">org/apache/hadoop/hbase/CellUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>82</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>83</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>301</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>319</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>322</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>330</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>334</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>339</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>341</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>344</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>364</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>374</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>380</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>389</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>407</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>490</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>514</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>577</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>578</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>590</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>619</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>681</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>682</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>688</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>711</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>712</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -8066,25 +8071,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ChoreService.java">org/apache/hadoop/hbase/ChoreService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>304</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>373</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -8093,31 +8098,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterId.java">org/apache/hadoop/hbase/ClusterId.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.DeserializationException' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -8126,13 +8131,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterManager.java">org/apache/hadoop/hbase/ClusterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -8141,37 +8146,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CompoundConfiguration.java">org/apache/hadoop/hbase/CompoundConfiguration.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def modifier' has incorrect indentation level 3, expected level should be 4.</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>183</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>186</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 6, expected level should be 8.</td>
 <td>198</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -8180,19 +8185,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.Coprocessor.java">org/apache/hadoop/hbase/Coprocessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Service' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -8201,25 +8206,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DistributedHBaseCluster.java">org/apache/hadoop/hbase/DistributedHBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>453</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -8228,13 +8233,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ExtendedCell.java">org/apache/hadoop/hbase/ExtendedCell.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -8243,19 +8248,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.GenericTestUtils.java">org/apache/hadoop/hbase/GenericTestUtils.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 3 should be on the previous line.</td>
 <td>99</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -8264,19 +8269,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseCluster.java">org/apache/hadoop/hbase/HBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>372</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -8285,19 +8290,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseClusterManager.java">org/apache/hadoop/hbase/HBaseClusterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>77</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -8306,37 +8311,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseConfiguration.java">org/apache/hadoop/hbase/HBaseConfiguration.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>104</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch' child has incorrect indentation level 7, expected level should be 6.</td>
 <td>168</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>185</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -8345,19 +8350,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseIOException.java">org/apache/hadoop/hbase/HBaseIOException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>41</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -8366,157 +8371,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseTestCase.java">org/apache/hadoop/hbase/HBaseTestCase.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'junit.framework.AssertionFailedError' import.</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>94</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>144</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 4, expected level should be 2.</td>
 <td>147</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>148</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 4, expected level should be 2.</td>
 <td>149</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>154</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>155</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>156</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>158</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>162</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>168</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>174</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>227</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>228</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>229</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>230</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>234</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>253</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>271</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>275</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>289</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>295</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>397</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -8525,1225 +8530,1225 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseTestingUtility.java">org/apache/hadoop/hbase/HBaseTestingUtility.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>356</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>358</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 7, expected level should be 8.</td>
 <td>435</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child has incorrect indentation level 9, expected level should be 10.</td>
 <td>436</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child has incorrect indentation level 9, expected level should be 10.</td>
 <td>437</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child has incorrect indentation level 9, expected level should be 10.</td>
 <td>438</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call rparen' has incorrect indentation level 7, expected level should be 8.</td>
 <td>439</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>451</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>512</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>516</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>524</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>528</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>536</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>546</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>561</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>565</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>566</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>567</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>579</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>583</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>584</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>600</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>600</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>719</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>763</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>1216</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1227</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1301</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1316</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1328</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1329</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1330</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1332</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1347</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1360</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1382</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1390</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1398</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
... 111044 lines suppressed ...