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 2019/01/13 14:47:21 UTC

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

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 946e257  Published site at c5691a9f602a04ae2e010a90c8ab61aeb764405e.
946e257 is described below

commit 946e257e4d1bcdbd8c35a40ed1c6bb0771952e07
Author: jenkins <bu...@apache.org>
AuthorDate: Sun Jan 13 14:47:13 2019 +0000

    Published site at c5691a9f602a04ae2e010a90c8ab61aeb764405e.
---
 acid-semantics.html                                |    4 +-
 apache_hbase_reference_guide.pdf                   |    4 +-
 book.html                                          |    2 +-
 bulk-loads.html                                    |    4 +-
 checkstyle-aggregate.html                          |  110 +-
 checkstyle.rss                                     |    4 +-
 coc.html                                           |    4 +-
 dependencies.html                                  |    4 +-
 dependency-convergence.html                        |    4 +-
 dependency-info.html                               |    4 +-
 dependency-management.html                         |    4 +-
 devapidocs/constant-values.html                    |    4 +-
 ...aTableAccessor.MetaTableScanResultConsumer.html |   18 +-
 .../hadoop/hbase/AsyncMetaTableAccessor.html       |   60 +-
 ...seAdmin.AddColumnFamilyProcedureBiConsumer.html |    6 +-
 ...seAdmin.CreateNamespaceProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.CreateTableProcedureBiConsumer.html |    6 +-
 ...dmin.DeleteColumnFamilyProcedureBiConsumer.html |    6 +-
 ...seAdmin.DeleteNamespaceProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.DeleteTableProcedureBiConsumer.html |    8 +-
 ...HBaseAdmin.DisableTableProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.EnableTableProcedureBiConsumer.html |    6 +-
 ...eAdmin.MergeTableRegionProcedureBiConsumer.html |    6 +-
 ...dmin.ModifyColumnFamilyProcedureBiConsumer.html |    6 +-
 ...seAdmin.ModifyNamespaceProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.ModifyTableProcedureBiConsumer.html |    6 +-
 ...yncHBaseAdmin.NamespaceProcedureBiConsumer.html |   14 +-
 .../RawAsyncHBaseAdmin.ProcedureBiConsumer.html    |   10 +-
 ...cHBaseAdmin.ReplicationProcedureBiConsumer.html |   14 +-
 ...eAdmin.SplitTableRegionProcedureBiConsumer.html |    6 +-
 ...awAsyncHBaseAdmin.TableProcedureBiConsumer.html |   14 +-
 ...BaseAdmin.TruncateTableProcedureBiConsumer.html |    6 +-
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.html    |  352 +-
 ...aTableAccessor.MetaTableScanResultConsumer.html | 1216 ++--
 .../hadoop/hbase/AsyncMetaTableAccessor.html       | 1216 ++--
 .../src-html/org/apache/hadoop/hbase/Version.html  |    4 +-
 ...seAdmin.AddColumnFamilyProcedureBiConsumer.html | 6363 ++++++++++----------
 .../client/RawAsyncHBaseAdmin.AdminRpcCall.html    | 6363 ++++++++++----------
 .../hbase/client/RawAsyncHBaseAdmin.Converter.html | 6363 ++++++++++----------
 ...seAdmin.CreateNamespaceProcedureBiConsumer.html | 6363 ++++++++++----------
 ...cHBaseAdmin.CreateTableProcedureBiConsumer.html | 6363 ++++++++++----------
 ...dmin.DeleteColumnFamilyProcedureBiConsumer.html | 6363 ++++++++++----------
 ...seAdmin.DeleteNamespaceProcedureBiConsumer.html | 6363 ++++++++++----------
 ...cHBaseAdmin.DeleteTableProcedureBiConsumer.html | 6363 ++++++++++----------
 ...HBaseAdmin.DisableTableProcedureBiConsumer.html | 6363 ++++++++++----------
 ...cHBaseAdmin.EnableTableProcedureBiConsumer.html | 6363 ++++++++++----------
 .../client/RawAsyncHBaseAdmin.MasterRpcCall.html   | 6363 ++++++++++----------
 ...eAdmin.MergeTableRegionProcedureBiConsumer.html | 6363 ++++++++++----------
 ...dmin.ModifyColumnFamilyProcedureBiConsumer.html | 6363 ++++++++++----------
 ...seAdmin.ModifyNamespaceProcedureBiConsumer.html | 6363 ++++++++++----------
 ...cHBaseAdmin.ModifyTableProcedureBiConsumer.html | 6363 ++++++++++----------
 ...yncHBaseAdmin.NamespaceProcedureBiConsumer.html | 6363 ++++++++++----------
 .../RawAsyncHBaseAdmin.ProcedureBiConsumer.html    | 6363 ++++++++++----------
 ...cHBaseAdmin.ReplicationProcedureBiConsumer.html | 6363 ++++++++++----------
 ...eAdmin.SplitTableRegionProcedureBiConsumer.html | 6363 ++++++++++----------
 .../client/RawAsyncHBaseAdmin.TableOperator.html   | 6363 ++++++++++----------
 ...awAsyncHBaseAdmin.TableProcedureBiConsumer.html | 6363 ++++++++++----------
 ...BaseAdmin.TruncateTableProcedureBiConsumer.html | 6363 ++++++++++----------
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.html    | 6363 ++++++++++----------
 downloads.html                                     |    4 +-
 export_control.html                                |    4 +-
 index.html                                         |    4 +-
 integration.html                                   |    4 +-
 issue-tracking.html                                |    4 +-
 license.html                                       |    4 +-
 mail-lists.html                                    |    4 +-
 metrics.html                                       |    4 +-
 old_news.html                                      |    4 +-
 plugin-management.html                             |    4 +-
 plugins.html                                       |    4 +-
 poweredbyhbase.html                                |    4 +-
 project-info.html                                  |    4 +-
 project-reports.html                               |    4 +-
 project-summary.html                               |    4 +-
 pseudo-distributed.html                            |    4 +-
 replication.html                                   |    4 +-
 resources.html                                     |    4 +-
 source-repository.html                             |    4 +-
 sponsors.html                                      |    4 +-
 supportingprojects.html                            |    4 +-
 team-list.html                                     |    4 +-
 testdevapidocs/index-all.html                      |    2 +
 .../apache/hadoop/hbase/backup/package-tree.html   |    2 +-
 .../hbase/client/TestAsyncTableAdminApi3.html      |   46 +-
 .../org/apache/hadoop/hbase/package-tree.html      |    8 +-
 .../hadoop/hbase/procedure/package-tree.html       |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    6 +-
 .../hadoop/hbase/regionserver/package-tree.html    |    6 +-
 .../org/apache/hadoop/hbase/test/package-tree.html |    4 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |    2 +-
 .../hbase/client/TestAsyncTableAdminApi3.html      |  546 +-
 91 files changed, 75272 insertions(+), 74951 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index a32df2f..a678a88 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -611,7 +611,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index c9aa18c..c8fc825 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.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20190111142935+00'00')
-/CreationDate (D:20190111144416+00'00')
+/ModDate (D:20190113142938+00'00')
+/CreationDate (D:20190113144348+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index 1f5e3cf..a2452a4 100644
--- a/book.html
+++ b/book.html
@@ -41428,7 +41428,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 2019-01-11 14:29:35 UTC
+Last updated 2019-01-13 14:29:38 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 191ca0a..a7c59c3 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -316,7 +316,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 706c626..46937ae 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -294,7 +294,7 @@
 <td>3859</td>
 <td>0</td>
 <td>0</td>
-<td>14536</td></tr></table></div>
+<td>14534</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -1677,7 +1677,7 @@
 <td><a href="#org.apache.hadoop.hbase.client.TestAsyncTableAdminApi3.java">org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>3</td></tr>
+<td>1</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestAsyncTableScanMetrics.java">org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.java</a></td>
 <td>0</td>
@@ -9648,7 +9648,7 @@
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li>
 <li>groups: <tt>&quot;*,org.apache.hbase.thirdparty,org.apache.hadoop.hbase.shaded&quot;</tt></li>
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
-<td>1105</td>
+<td>1103</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -9678,12 +9678,12 @@
 <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>726</td>
+<td>727</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3407</td>
+<td>3406</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -9790,151 +9790,151 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>62</td></tr>
+<td>59</td></tr>
 <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>109</td></tr>
+<td>103</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' has incorrect indentation level 8, expected level should be 14.</td>
-<td>121</td></tr>
+<td>115</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 10, expected level should be 16.</td>
-<td>122</td></tr>
+<td>116</td></tr>
 <tr class="b">
 <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 12, expected level should be 18.</td>
-<td>123</td></tr>
+<td>117</td></tr>
 <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 12, expected level should be 18.</td>
-<td>124</td></tr>
+<td>118</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be 16.</td>
-<td>125</td></tr>
+<td>119</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 16.</td>
-<td>126</td></tr>
+<td>120</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 8, expected level should be 14.</td>
-<td>128</td></tr>
+<td>122</td></tr>
 <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>138</td></tr>
+<td>132</td></tr>
 <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>178</td></tr>
+<td>172</td></tr>
 <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>191</td></tr>
+<td>185</td></tr>
 <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>217</td></tr>
+<td>211</td></tr>
 <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 117).</td>
-<td>233</td></tr>
+<td>227</td></tr>
 <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>244</td></tr>
+<td>238</td></tr>
 <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>275</td></tr>
+<td>269</td></tr>
 <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>288</td></tr>
+<td>282</td></tr>
 <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>394</td></tr>
+<td>388</td></tr>
 <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>396</td></tr>
+<td>390</td></tr>
 <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>404</td></tr>
+<td>398</td></tr>
 <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>412</td></tr>
+<td>406</td></tr>
 <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>457</td></tr>
+<td>451</td></tr>
 <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>462</td></tr>
+<td>456</td></tr>
 <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>480</td></tr>
+<td>474</td></tr>
 <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>545</td></tr></table></div>
+<td>539</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.BBKVComparator.java">org/apache/hadoop/hbase/BBKVComparator.java</h3>
 <table border="0" class="table table-striped">
@@ -18743,7 +18743,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 0 has parse error. Details: no viable alternative at input '   *' while parsing JAVADOC_TAG</td>
 <td>117</td></tr>
 <tr class="b">
@@ -24916,91 +24916,91 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
-<td>698</td></tr>
+<td>711</td></tr>
 <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 105).</td>
-<td>752</td></tr>
+<td>765</td></tr>
 <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 115).</td>
-<td>764</td></tr>
+<td>777</td></tr>
 <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 103).</td>
-<td>1596</td></tr>
+<td>1609</td></tr>
 <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 125).</td>
-<td>1618</td></tr>
+<td>1631</td></tr>
 <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 114).</td>
-<td>1694</td></tr>
+<td>1707</td></tr>
 <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 101).</td>
-<td>1932</td></tr>
+<td>1945</td></tr>
 <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 103).</td>
-<td>2204</td></tr>
+<td>2217</td></tr>
 <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 103).</td>
-<td>2208</td></tr>
+<td>2221</td></tr>
 <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 101).</td>
-<td>2231</td></tr>
+<td>2244</td></tr>
 <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>2241</td></tr>
+<td>2254</td></tr>
 <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>2282</td></tr>
+<td>2295</td></tr>
 <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 106).</td>
-<td>2778</td></tr>
+<td>2791</td></tr>
 <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 104).</td>
-<td>2962</td></tr>
+<td>2975</td></tr>
 <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 105).</td>
-<td>3105</td></tr></table></div>
+<td>3118</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionAdminServiceCallable.java">org/apache/hadoop/hbase/client/RegionAdminServiceCallable.java</h3>
 <table border="0" class="table table-striped">
@@ -28024,22 +28024,10 @@
 <th>Line</th></tr>
 <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 'java.util.List' import.</td>
-<td>34</td></tr>
-<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.TableName.META_TABLE_NAME' import.</td>
-<td>39</td></tr>
-<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>47</td></tr></table></div>
+<td>50</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestAsyncTableScanMetrics.java">org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.java</h3>
 <table border="0" class="table table-striped">
@@ -113621,7 +113609,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/checkstyle.rss b/checkstyle.rss
index ff50245..f76c886 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2019 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3859,
-             Errors: 14536,
+             Errors: 14534,
              Warnings: 0,
              Infos: 0
       </title>
@@ -20215,7 +20215,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  1
                 </td>
               </tr>
                           <tr>
diff --git a/coc.html b/coc.html
index d55087f..4a9cd32 100644
--- a/coc.html
+++ b/coc.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -385,7 +385,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/dependencies.html b/dependencies.html
index 7883462..917c650 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 566ece2..12b65bc 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -680,7 +680,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/dependency-info.html b/dependency-info.html
index d061f12..cc1bbb2 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -323,7 +323,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/dependency-management.html b/dependency-management.html
index fa611d8..9522bda 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20190111" />
+    <meta name="Date-Revision-yyyymmdd" content="20190113" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1009,7 +1009,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-11</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-13</li>
             </p>
                 </div>
 
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index fb9a522..17140e7 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3859,7 +3859,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<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></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Fri Jan 11 14:38:59 UTC 2019"</code></td>
+<td class="colLast"><code>"Sun Jan 13 14:38:50 UTC 2019"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3873,7 +3873,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<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></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"d62aa8bb8bcd39f3443a15e6bab9cb64"</code></td>
+<td class="colLast"><code>"39ebd2822680073cd13cd2ccb89956de"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
diff --git a/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html b/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html
index 1df03f9..0da4c52 100644
--- a/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.317">AsyncMetaTableAccessor.MetaTableScanResultConsumer</a>
+<pre>private static final class <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.311">AsyncMetaTableAccessor.MetaTableScanResultConsumer</a>
 extends <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>
 implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer</a></pre>
 </li>
@@ -264,7 +264,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockList">
 <li class="blockList">
 <h4>currentRowCount</h4>
-<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.319">currentRowCount</a></pre>
+<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.313">currentRowCount</a></pre>
 </li>
 </ul>
 <a name="rowUpperLimit">
@@ -273,7 +273,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockList">
 <li class="blockList">
 <h4>rowUpperLimit</h4>
-<pre>private final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.321">rowUpperLimit</a></pre>
+<pre>private final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.315">rowUpperLimit</a></pre>
 </li>
 </ul>
 <a name="visitor">
@@ -282,7 +282,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockList">
 <li class="blockList">
 <h4>visitor</h4>
-<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a> <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.323">visitor</a></pre>
+<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a> <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.317">visitor</a></pre>
 </li>
 </ul>
 <a name="future">
@@ -291,7 +291,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockListLast">
 <li class="blockList">
 <h4>future</h4>
-<pre>private final&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; <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.325">future</a></pre>
+<pre>private final&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; <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.319">future</a></pre>
 </li>
 </ul>
 </li>
@@ -308,7 +308,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetaTableScanResultConsumer</h4>
-<pre><a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.327">MetaTableScanResultConsumer</a>(int&nbsp;rowUpperLimit,
+<pre><a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.321">MetaTableScanResultConsumer</a>(int&nbsp;rowUpperLimit,
                             <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
                             <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;future)</pre>
 </li>
@@ -327,7 +327,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockList">
 <li class="blockList">
 <h4>onError</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.336">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.330">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onError-java.lang.Throwable-">ScanResultConsumerBase</a></code></span></div>
 <div class="block">Indicate that we hit an unrecoverable error and the scan operation is terminated.
  <p>
@@ -344,7 +344,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockList">
 <li class="blockList">
 <h4>onComplete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.343">onComplete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.337">onComplete</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onComplete--">ScanResultConsumerBase</a></code></span></div>
 <div class="block">Indicate that the scan operation is completed normally.</div>
 <dl>
@@ -359,7 +359,7 @@ implements <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResul
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onNext</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.348">onNext</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html#line.342">onNext</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
                    <a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-">AdvancedScanResultConsumer</a></code></span></div>
 <div class="block">Indicate that we have receive some data.</div>
diff --git a/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html b/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html
index 8665fa4..8a19c3c 100644
--- a/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html
+++ b/devapidocs/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.63">AsyncMetaTableAccessor</a>
+public class <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.60">AsyncMetaTableAccessor</a>
 extends <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></pre>
 <div class="block">The asynchronous meta table accessor. Used to read/write region and assignment information store
  in <code>hbase:meta</code>.</div>
@@ -394,7 +394,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.65">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.62">LOG</a></pre>
 </li>
 </ul>
 <a name="META_REPLICA_ID_DELIMITER">
@@ -403,7 +403,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>META_REPLICA_ID_DELIMITER</h4>
-<pre>private static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.69">META_REPLICA_ID_DELIMITER</a></pre>
+<pre>private static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.66">META_REPLICA_ID_DELIMITER</a></pre>
 <div class="block">The delimiter for meta columns for replicaIds &gt; 0</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -417,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SERVER_COLUMN_PATTERN</h4>
-<pre>private static final&nbsp;<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> <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.72">SERVER_COLUMN_PATTERN</a></pre>
+<pre>private static final&nbsp;<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> <a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.69">SERVER_COLUMN_PATTERN</a></pre>
 <div class="block">A regex for parsing server columns from meta. See above javadoc for meta layout</div>
 </li>
 </ul>
@@ -435,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AsyncMetaTableAccessor</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.63">AsyncMetaTableAccessor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.60">AsyncMetaTableAccessor</a>()</pre>
 </li>
 </ul>
 </li>
@@ -452,7 +452,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tableExists</h4>
-<pre>public static&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/AsyncMetaTableAccessor.html#line.75">tableExists</a>(<a href="../../../. [...]
+<pre>public static&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/AsyncMetaTableAccessor.html#line.72">tableExists</a>(<a href="../../../. [...]
                                                      <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
@@ -462,7 +462,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableState</h4>
-<pre>public static&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/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a [...]
+<pre>public static&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/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a [...]
                                                                     <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
@@ -472,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocation</h4>
-<pre>public static&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/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt [...]
+<pre>public static&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/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt [...]
                                                                              byte[]&nbsp;regionName)</pre>
 <div class="block">Returns the HRegionLocation from meta for the given region</div>
 <dl>
@@ -490,7 +490,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocationWithEncodedName</h4>
-<pre>public static&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/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt [...]
+<pre>public static&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/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt [...]
                                                                                             byte[]&nbsp;encodedRegionName)</pre>
 <div class="block">Returns the HRegionLocation from meta for the given encoded region name</div>
 <dl>
@@ -508,7 +508,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableState</h4>
-<pre>private static&nbsp;<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="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.176">getTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" ti [...]
+<pre>private static&nbsp;<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="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.170">getTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" ti [...]
                                            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="throwsLabel">Throws:</span></dt>
@@ -522,7 +522,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableHRegionLocations</h4>
-<pre>public static&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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&gt;&nb [...]
+<pre>public static&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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&gt;&nb [...]
                                                                                 <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="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableName)</pre>
 <div class="block">Used to get all region locations for the specific table.</div>
 <dl>
@@ -541,7 +541,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableRegionsAndLocations</h4>
-<pre>private static&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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../ [...]
+<pre>private static&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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../ [...]
                                                                                                 <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="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableName,
                                                                                                 boolean&nbsp;excludeOfflinedSplitParents)</pre>
 <div class="block">Used to get table regions' info and server.</div>
@@ -562,7 +562,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>scanMeta</h4>
-<pre>private static&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/AsyncMetaTableAccessor.html#line.280">scanMeta</a>(<a href="../../../../org/a [...]
+<pre>private static&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/AsyncMetaTableAccessor.html#line.274">scanMeta</a>(<a href="../../../../org/a [...]
                                                 <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="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableName,
                                                 <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
                                                 <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</pre>
@@ -582,7 +582,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>scanMeta</h4>
-<pre>private static&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/AsyncMetaTableAccessor.html#line.295">scanMeta</a>(<a href="../../../../org/a [...]
+<pre>private static&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/AsyncMetaTableAccessor.html#line.289">scanMeta</a>(<a href="../../../../org/a [...]
                                                 <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;byte[]&gt;&nbsp;startRow,
                                                 <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;byte[]&gt;&nbsp;stopRow,
                                                 <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
@@ -606,7 +606,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaScan</h4>
-<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.372">getMetaScan</a>(<a href="../../../../org/apache/hadoop/hbase/client/AsyncTable.html" title="interface in org.apache.hadoop.hbase.client">AsyncTable</a>&lt;?&gt;&nbsp;metaTable,
+<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.366">getMetaScan</a>(<a href="../../../../org/apache/hadoop/hbase/client/AsyncTable.html" title="interface in org.apache.hadoop.hbase.client">AsyncTable</a>&lt;?&gt;&nbsp;metaTable,
                                 int&nbsp;rowUpperLimit)</pre>
 </li>
 </ul>
@@ -616,7 +616,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocations</h4>
-<pre>private static&nbsp;<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="../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.393">getRegionLocations</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" t [...]
+<pre>private static&nbsp;<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="../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.387">getRegionLocations</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" t [...]
 <div class="block">Returns an HRegionLocationList extracted from the result.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -631,7 +631,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocation</h4>
-<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.441">getRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
+<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.435">getRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
                                                  <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                                                  int&nbsp;replicaId)</pre>
 <div class="block">Returns the HRegionLocation parsed from the given meta row Result
@@ -653,7 +653,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>private static&nbsp;<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="../../../../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/AsyncMetaTableAccessor.html#line.454">getServerName</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in  [...]
+<pre>private static&nbsp;<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="../../../../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/AsyncMetaTableAccessor.html#line.448">getServerName</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in  [...]
                                                   int&nbsp;replicaId)</pre>
 <div class="block">Returns a <a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><code>ServerName</code></a> from catalog table <a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>.</div>
 <dl>
@@ -670,7 +670,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSeqNumDuringOpen</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.478">getSeqNumDuringOpen</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
+<pre>private static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.472">getSeqNumDuringOpen</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
                                         int&nbsp;replicaId)</pre>
 <div class="block">The latest seqnum that the server writing to meta observed when opening the region.
  E.g. the seqNum when the result of <a href="../../../../org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#getServerName-org.apache.hadoop.hbase.client.Result-int-"><code>getServerName(Result, int)</code></a> was written.</div>
@@ -688,7 +688,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableStartRowForMeta</h4>
-<pre>private static&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.488">getTableStartRowForMeta</a>(<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="../../../../org/apache/h [...]
+<pre>private static&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.482">getTableStartRowForMeta</a>(<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="../../../../org/apache/h [...]
                                                         <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -704,7 +704,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableStopRowForMeta</h4>
-<pre>private static&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.511">getTableStopRowForMeta</a>(<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="../../../../org/apache/ha [...]
+<pre>private static&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.505">getTableStopRowForMeta</a>(<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="../../../../org/apache/ha [...]
                                                        <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -720,7 +720,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getHRegionInfo</h4>
-<pre>private static&nbsp;<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="../../../../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/AsyncMetaTableAccessor.html#line.543">getHRegionInfo</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.htm [...]
+<pre>private static&nbsp;<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="../../../../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/AsyncMetaTableAccessor.html#line.537">getHRegionInfo</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.htm [...]
                                                    byte[]&nbsp;qualifier)</pre>
 <div class="block">Returns the RegionInfo object from the column <a href="../../../../org/apache/hadoop/hbase/HConstants.html#CATALOG_FAMILY"><code>HConstants.CATALOG_FAMILY</code></a> and
  <code>qualifier</code> of the catalog table result.</div>
@@ -739,7 +739,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCatalogFamily</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.554">getCatalogFamily</a>()</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.548">getCatalogFamily</a>()</pre>
 <div class="block">Returns the column family used for meta columns.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -753,7 +753,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableFamily</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.562">getTableFamily</a>()</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.556">getTableFamily</a>()</pre>
 <div class="block">Returns the column family used for table columns.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -767,7 +767,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfoColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.570">getRegionInfoColumn</a>()</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.564">getRegionInfoColumn</a>()</pre>
 <div class="block">Returns the column qualifier for serialized region info</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -781,7 +781,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.578">getStateColumn</a>()</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.572">getStateColumn</a>()</pre>
 <div class="block">Returns the column qualifier for serialized table state</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -795,7 +795,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.587">getServerColumn</a>(int&nbsp;replicaId)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.581">getServerColumn</a>(int&nbsp;replicaId)</pre>
 <div class="block">Returns the column qualifier for server column for replicaId</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -811,7 +811,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartCodeColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.599">getStartCodeColumn</a>(int&nbsp;replicaId)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.593">getStartCodeColumn</a>(int&nbsp;replicaId)</pre>
 <div class="block">Returns the column qualifier for server start code column for replicaId</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -827,7 +827,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSeqNumColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.611">getSeqNumColumn</a>(int&nbsp;replicaId)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.605">getSeqNumColumn</a>(int&nbsp;replicaId)</pre>
 <div class="block">Returns the column qualifier for seqNum column for replicaId</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -843,7 +843,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>parseReplicaIdFromServerColumn</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.624">parseReplicaIdFromServerColumn</a>(byte[]&nbsp;serverColumn)</pre>
+<pre>private static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#line.618">parseReplicaIdFromServerColumn</a>(byte[]&nbsp;serverColumn)</pre>
 <div class="block">Parses the replicaId from the server column qualifier. See top of the class javadoc
  for the actual meta layout</div>
 <dl>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html
index 55c85de..bdf2bfc 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2483">RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2496">RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AddColumnFamilyProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html#line.2485">AddColumnFamilyProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html#line.2498">AddColumnFamilyProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html#line.2490">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html#line.2503">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html
index 37a5aa8..9cff15b 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2519">RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2532">RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CreateNamespaceProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html#line.2521">CreateNamespaceProcedureBiConsumer</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;namespaceName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html#line.2534">CreateNamespaceProcedureBiConsumer</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;namespaceName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html#line.2526">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.CreateNamespaceProcedureBiConsumer.html#line.2539">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html
index e8ab1a3..d7e5c7e 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2405">RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2418">RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CreateTableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html#line.2407">CreateTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html#line.2420">CreateTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html#line.2412">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.CreateTableProcedureBiConsumer.html#line.2425">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html
index 7afb45f..bd20358 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2495">RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2508">RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DeleteColumnFamilyProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html#line.2497">DeleteColumnFamilyProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html#line.2510">DeleteColumnFamilyProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html#line.2502">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.DeleteColumnFamilyProcedureBiConsumer.html#line.2515">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html
index 83987f6..cb235fc 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2531">RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2544">RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DeleteNamespaceProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html#line.2533">DeleteNamespaceProcedureBiConsumer</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;namespaceName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html#line.2546">DeleteNamespaceProcedureBiConsumer</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;namespaceName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html#line.2538">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.DeleteNamespaceProcedureBiConsumer.html#line.2551">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html
index ff6d883..23a10c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2429">RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2442">RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -236,7 +236,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DeleteTableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html#line.2431">DeleteTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html#line.2444">DeleteTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -253,7 +253,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html#line.2436">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html#line.2449">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
@@ -266,7 +266,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onFinished</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html#line.2441">onFinished</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DeleteTableProcedureBiConsumer.html#line.2454">onFinished</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#onFinished--">onFinished</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html
index 1569f04..6a98697 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2471">RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2484">RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DisableTableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html#line.2473">DisableTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html#line.2486">DisableTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html#line.2478">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.DisableTableProcedureBiConsumer.html#line.2491">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html
index 4f778ce..2245b52 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2459">RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2472">RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EnableTableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html#line.2461">EnableTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html#line.2474">EnableTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html#line.2466">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.EnableTableProcedureBiConsumer.html#line.2479">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html
index a8d2eb8..d2ca797 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2555">RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2568">RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MergeTableRegionProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html#line.2557">MergeTableRegionProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html#line.2570">MergeTableRegionProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html#line.2562">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.MergeTableRegionProcedureBiConsumer.html#line.2575">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html
index 397b1c3..fc0d01a 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2507">RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2520">RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ModifyColumnFamilyProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html#line.2509">ModifyColumnFamilyProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html#line.2522">ModifyColumnFamilyProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html#line.2514">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.ModifyColumnFamilyProcedureBiConsumer.html#line.2527">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html
index da882ac..d754b91 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2543">RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2556">RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ModifyNamespaceProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html#line.2545">ModifyNamespaceProcedureBiConsumer</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;namespaceName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html#line.2558">ModifyNamespaceProcedureBiConsumer</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;namespaceName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html#line.2550">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.ModifyNamespaceProcedureBiConsumer.html#line.2563">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html
index 984ad4a..3f4cca7 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2417">RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2430">RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -233,7 +233,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ModifyTableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html#line.2419">ModifyTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a>&nbsp;admin,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html#line.2432">ModifyTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a>&nbsp;admin,
                                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
@@ -251,7 +251,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html#line.2424">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.ModifyTableProcedureBiConsumer.html#line.2437">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html
index 5b912b1..8446b2e 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html
@@ -126,7 +126,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2381">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a>
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2394">RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -240,7 +240,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>namespaceName</h4>
-<pre>protected final&nbsp;<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="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2382">namespaceName</a></pre>
+<pre>protected final&nbsp;<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="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2395">namespaceName</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +257,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NamespaceProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2384">NamespaceProcedureBiConsumer</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;namespaceName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2397">NamespaceProcedureBiConsumer</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;namespaceName)</pre>
 </li>
 </ul>
 </li>
@@ -274,7 +274,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>getOperationType</h4>
-<pre>abstract&nbsp;<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/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2388">getOperationType</a>()</pre>
+<pre>abstract&nbsp;<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/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2401">getOperationType</a>()</pre>
 </li>
 </ul>
 <a name="getDescription--">
@@ -283,7 +283,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>getDescription</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/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2390">getDescription</a>()</pre>
+<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/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2403">getDescription</a>()</pre>
 </li>
 </ul>
 <a name="onFinished--">
@@ -292,7 +292,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>onFinished</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2395">onFinished</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2408">onFinished</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#onFinished--">onFinished</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></code></dd>
@@ -305,7 +305,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onError</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2400">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html#line.2413">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#onError-java.lang.Throwable-">onError</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html
index c809d83..9d53dbb 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html
@@ -121,7 +121,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2340">RawAsyncHBaseAdmin.ProcedureBiConsumer</a>
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2353">RawAsyncHBaseAdmin.ProcedureBiConsumer</a>
 extends <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>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/BiConsumer.html?is-external=true" title="class or interface in java.util.function">BiConsumer</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&gt;</pre>
 </li>
@@ -209,7 +209,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ProcedureBiConsumer</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2340">ProcedureBiConsumer</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2353">ProcedureBiConsumer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -226,7 +226,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function
 <ul class="blockList">
 <li class="blockList">
 <h4>onFinished</h4>
-<pre>abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2342">onFinished</a>()</pre>
+<pre>abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2355">onFinished</a>()</pre>
 </li>
 </ul>
 <a name="onError-java.lang.Throwable-">
@@ -235,7 +235,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function
 <ul class="blockList">
 <li class="blockList">
 <h4>onError</h4>
-<pre>abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2344">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
+<pre>abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2357">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 </li>
 </ul>
 <a name="accept-java.lang.Void-java.lang.Throwable-">
@@ -244,7 +244,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function
 <ul class="blockListLast">
 <li class="blockList">
 <h4>accept</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2347">accept</a>(<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>&nbsp;v,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#line.2360">accept</a>(<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>&nbsp;v,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html
index 70b7511..9854ac0 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2579">RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2592">RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -237,7 +237,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>peerId</h4>
-<pre>private final&nbsp;<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="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2580">peerId</a></pre>
+<pre>private final&nbsp;<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="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2593">peerId</a></pre>
 </li>
 </ul>
 <a name="getOperation">
@@ -246,7 +246,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperation</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</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; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2581">getOperation</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</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; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2594">getOperation</a></pre>
 </li>
 </ul>
 </li>
@@ -263,7 +263,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2583">ReplicationProcedureBiConsumer</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="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2596">ReplicationProcedureBiConsumer</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="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</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;getOperation)</pre>
 </li>
 </ul>
@@ -281,7 +281,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>getDescription</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/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2588">getDescription</a>()</pre>
+<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/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2601">getDescription</a>()</pre>
 </li>
 </ul>
 <a name="onFinished--">
@@ -290,7 +290,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>onFinished</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2593">onFinished</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2606">onFinished</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#onFinished--">onFinished</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></code></dd>
@@ -303,7 +303,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onError</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2598">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ReplicationProcedureBiConsumer.html#line.2611">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#onError-java.lang.Throwable-">onError</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html
index 8c8b548..3e7c6fd 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2567">RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2580">RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SplitTableRegionProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html#line.2569">SplitTableRegionProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html#line.2582">SplitTableRegionProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html#line.2574">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.SplitTableRegionProcedureBiConsumer.html#line.2587">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html
index 957bc20..5c098f1 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html
@@ -126,7 +126,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2356">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a>
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2369">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -240,7 +240,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2357">tableName</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2370">tableName</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +257,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2359">TableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2372">TableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -274,7 +274,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>getOperationType</h4>
-<pre>abstract&nbsp;<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/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2363">getOperationType</a>()</pre>
+<pre>abstract&nbsp;<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/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2376">getOperationType</a>()</pre>
 </li>
 </ul>
 <a name="getDescription--">
@@ -283,7 +283,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>getDescription</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/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2365">getDescription</a>()</pre>
+<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/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2378">getDescription</a>()</pre>
 </li>
 </ul>
 <a name="onFinished--">
@@ -292,7 +292,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockList">
 <li class="blockList">
 <h4>onFinished</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2371">onFinished</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2384">onFinished</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#onFinished--">onFinished</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></code></dd>
@@ -305,7 +305,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onError</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2376">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#line.2389">onError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html#onError-java.lang.Throwable-">onError</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.ProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.ProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html
index 19ed074..f75e095 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2447">RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2460">RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></pre>
 </li>
 </ul>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TruncateTableProcedureBiConsumer</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html#line.2449">TruncateTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html#line.2462">TruncateTableProcedureBiConsumer</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmi
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOperationType</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/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html#line.2454">getOperationType</a>()</pre>
+<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/RawAsyncHBaseAdmin.TruncateTableProcedureBiConsumer.html#line.2467">getOperationType</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html#getOperationType--">getOperationType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin.TableProcedureBiConsumer</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html
index 3335df0..9cdb1a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html
@@ -1682,7 +1682,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptors</h4>
-<pre>public&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor< [...]
+<pre>public&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor< [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableDescriptors-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">List all the tables.</div>
 <dl>
@@ -1701,7 +1701,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptors</h4>
-<pre>public&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor< [...]
+<pre>public&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor< [...]
                                                                      boolean&nbsp;includeSysTables)</pre>
 <div class="block"><a href="../../../../../org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#listTableDescriptors-boolean-"><code>listTableDescriptors(boolean)</code></a></div>
 <dl>
@@ -1721,7 +1721,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptors</h4>
-<pre>private&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor [...]
+<pre>private&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor [...]
 </li>
 </ul>
 <a name="listTableNames-boolean-">
@@ -1730,7 +1730,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableNames</h4>
-<pre>public&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../. [...]
+<pre>public&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableNames-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">List all of the names of tables.</div>
 <dl>
@@ -1749,7 +1749,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableNames</h4>
-<pre>public&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../. [...]
+<pre>public&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../. [...]
                                                          boolean&nbsp;includeSysTables)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableNames-java.util.regex.Pattern-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">List all of the names of userspace tables.</div>
@@ -1770,7 +1770,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNames</h4>
-<pre>private&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../ [...]
+<pre>private&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../ [...]
 </li>
 </ul>
 <a name="listTableDescriptorsByNamespace-java.lang.String-">
@@ -1779,7 +1779,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptorsByNamespace</h4>
-<pre>public&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor< [...]
+<pre>public&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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor< [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableDescriptorsByNamespace-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Get list of table descriptors by namespace.</div>
 <dl>
@@ -1798,7 +1798,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableNamesByNamespace</h4>
-<pre>public&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../. [...]
+<pre>public&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&gt;&nbsp;<a href="../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableNamesByNamespace-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Get list of table names by namespace.</div>
 <dl>
@@ -1817,7 +1817,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getDescriptor</h4>
-<pre>public&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/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.497">getDescriptor</a>(<a href="../ [...]
+<pre>public&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/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.500">getDescriptor</a>(<a href="../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getDescriptor-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Method for getting the tableDescriptor</div>
 <dl>
@@ -1836,7 +1836,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.520">createTable</a>(<a href="../../../../../o [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.523">createTable</a>(<a href="../../../../../o [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-">AsyncAdmin</a></code></span></div>
 <div class="block">Creates a new table.</div>
 <dl>
@@ -1853,7 +1853,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.526">createTable</a>(<a href="../../../../../o [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.529">createTable</a>(<a href="../../../../../o [...]
                                            byte[]&nbsp;startKey,
                                            byte[]&nbsp;endKey,
                                            int&nbsp;numRegions)</pre>
@@ -1880,7 +1880,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.536">createTable</a>(<a href="../../../../../o [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.539">createTable</a>(<a href="../../../../../o [...]
                                            byte[][]&nbsp;splitKeys)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Creates a new table with an initial set of empty regions defined by the specified split keys.
@@ -1901,7 +1901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.548">createTable</a>(<a href="../../../../../ [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.551">createTable</a>(<a href="../../../../../ [...]
                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest&nbsp;request)</pre>
 </li>
 </ul>
@@ -1911,7 +1911,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.556">modifyTable</a>(<a href="../../../../../o [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.559">modifyTable</a>(<a href="../../../../../o [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#modifyTable-org.apache.hadoop.hbase.client.TableDescriptor-">AsyncAdmin</a></code></span></div>
 <div class="block">Modify an existing table, more IRB friendly version.</div>
 <dl>
@@ -1928,7 +1928,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.564">deleteTable</a>(<a href="../../../../../o [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.567">deleteTable</a>(<a href="../../../../../o [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteTable-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Deletes a table.</div>
 <dl>
@@ -1945,7 +1945,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>truncateTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.572">truncateTable</a>(<a href="../../../../.. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.575">truncateTable</a>(<a href="../../../../.. [...]
                                              boolean&nbsp;preserveSplits)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Truncate a table.</div>
@@ -1964,7 +1964,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.580">enableTable</a>(<a href="../../../../../o [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.583">enableTable</a>(<a href="../../../../../o [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#enableTable-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Enable a table. The table has to be in disabled state for it to be enabled.</div>
 <dl>
@@ -1981,7 +1981,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.588">disableTable</a>(<a href="../../../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.591">disableTable</a>(<a href="../../../../../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#disableTable-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Disable a table. The table has to be in enabled state for it to be disabled.</div>
 <dl>
@@ -1996,7 +1996,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.596">isTableEnabled</a>(<a href="../../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.599">isTableEnabled</a>(<a href="../../. [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isTableEnabled-org.apache.hadoop.hbase.TableName-">isTableEnabled</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -2014,7 +2014,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableDisabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.613">isTableDisabled</a>(<a href="../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.619">isTableDisabled</a>(<a href="../../ [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isTableDisabled-org.apache.hadoop.hbase.TableName-">isTableDisabled</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -2032,7 +2032,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableAvailable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.630">isTableAvailable</a>(<a href="../.. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.639">isTableAvailable</a>(<a href="../.. [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isTableAvailable-org.apache.hadoop.hbase.TableName-">isTableAvailable</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -2050,7 +2050,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableAvailable</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.635">isTableAvailable</a>(<a href="../.. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.644">isTableAvailable</a>(<a href="../.. [...]
                                                    byte[][]&nbsp;splitKeys)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isTableAvailable-org.apache.hadoop.hbase.TableName-byte:A:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Use this api to check if the table has been created with the specified number of splitkeys
@@ -2072,7 +2072,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableAvailable</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.641">isTableAvailable</a>(<a href="../. [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.650">isTableAvailable</a>(<a href="../. [...]
                                                     <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;byte[][]&gt;&nbsp;splitKeys)</pre>
 </li>
 </ul>
@@ -2082,7 +2082,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRegionsWithSplitKeys</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.678">compareRegionsWithSplitKeys</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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;locations,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.691">compareRegionsWithSplitKeys</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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;locations,
                                             byte[][]&nbsp;splitKeys)</pre>
 </li>
 </ul>
@@ -2092,7 +2092,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumnFamily</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.698">addColumnFamily</a>(<a href="../../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.711">addColumnFamily</a>(<a href="../../../../ [...]
                                                <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;columnFamily)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#addColumnFamily-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">AsyncAdmin</a></code></span></div>
 <div class="block">Add a column family to an existing table.</div>
@@ -2111,7 +2111,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteColumnFamily</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.706">deleteColumnFamily</a>(<a href="../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.719">deleteColumnFamily</a>(<a href="../../../ [...]
                                                   byte[]&nbsp;columnFamily)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteColumnFamily-org.apache.hadoop.hbase.TableName-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Delete a column family from a table.</div>
@@ -2130,7 +2130,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumnFamily</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.714">modifyColumnFamily</a>(<a href="../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.727">modifyColumnFamily</a>(<a href="../../../ [...]
                                                   <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;columnFamily)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#modifyColumnFamily-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">AsyncAdmin</a></code></span></div>
 <div class="block">Modify an existing column family on a table.</div>
@@ -2149,7 +2149,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>createNamespace</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.723">createNamespace</a>(<a href="../../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.736">createNamespace</a>(<a href="../../../../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-">AsyncAdmin</a></code></span></div>
 <div class="block">Create a new namespace.</div>
 <dl>
@@ -2166,7 +2166,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyNamespace</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.731">modifyNamespace</a>(<a href="../../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.744">modifyNamespace</a>(<a href="../../../../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-">AsyncAdmin</a></code></span></div>
 <div class="block">Modify an existing namespace.</div>
 <dl>
@@ -2183,7 +2183,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNamespace</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.739">deleteNamespace</a>(<a href="https://docs [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.752">deleteNamespace</a>(<a href="https://docs [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteNamespace-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Delete an existing namespace. Only empty namespaces (no tables) can be removed.</div>
 <dl>
@@ -2200,7 +2200,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceDescriptor</h4>
-<pre>public&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/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.747">getNamespaceDescriptor</a>(<a href="http [...]
+<pre>public&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/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.760">getNamespaceDescriptor</a>(<a href="http [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getNamespaceDescriptor-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Get a namespace descriptor by name</div>
 <dl>
@@ -2219,7 +2219,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listNamespaceDescriptors</h4>
-<pre>public&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/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&gt;&gt [...]
+<pre>public&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/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&gt;&gt [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listNamespaceDescriptors--">AsyncAdmin</a></code></span></div>
 <div class="block">List available namespace descriptors</div>
 <dl>
@@ -2236,7 +2236,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegions</h4>
-<pre>public&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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt [...]
+<pre>public&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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getRegions-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Get all the online regions on a region server.</div>
 <dl>
@@ -2251,7 +2251,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegions</h4>
-<pre>public&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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt [...]
+<pre>public&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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getRegions-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Get the regions of a given table.</div>
 <dl>
@@ -2266,7 +2266,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.794">flush</a>(<a href="../../../../../org/apa [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.807">flush</a>(<a href="../../../../../org/apa [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#flush-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Flush a table.</div>
 <dl>
@@ -2283,7 +2283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>flushRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.824">flushRegion</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.837">flushRegion</a>(byte[]&nbsp;regionName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#flushRegion-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Flush an individual region.</div>
 <dl>
@@ -2300,7 +2300,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.848">flush</a>(<a href="../../../../../org/ap [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.861">flush</a>(<a href="../../../../../org/ap [...]
                                       <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 </li>
 </ul>
@@ -2310,7 +2310,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>flushRegionServer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.860">flushRegionServer</a>(<a href="../../../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.873">flushRegionServer</a>(<a href="../../../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#flushRegionServer-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Flush all region on the region server.</div>
 <dl>
@@ -2327,7 +2327,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.884">compact</a>(<a href="../../../../../org/a [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.897">compact</a>(<a href="../../../../../org/a [...]
                                        <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#compact-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.CompactType-">AsyncAdmin</a></code></span></div>
 <div class="block">Compact a table. When the returned CompletableFuture is done, it only means the compact request
@@ -2347,7 +2347,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.889">compact</a>(<a href="../../../../../org/a [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.902">compact</a>(<a href="../../../../../org/a [...]
                                        byte[]&nbsp;columnFamily,
                                        <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#compact-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.client.CompactType-">AsyncAdmin</a></code></span></div>
@@ -2370,7 +2370,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.897">compactRegion</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.910">compactRegion</a>(byte[]&nbsp;regionName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#compactRegion-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Compact an individual region. When the returned CompletableFuture is done, it only means the
  compact request was sent to HBase and may need some time to finish the compact operation.</div>
@@ -2388,7 +2388,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.902">compactRegion</a>(byte[]&nbsp;regionName,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.915">compactRegion</a>(byte[]&nbsp;regionName,
                                              byte[]&nbsp;columnFamily)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#compactRegion-byte:A-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Compact a column family within a region. When the returned CompletableFuture is done, it only
@@ -2410,7 +2410,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompact</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.909">majorCompact</a>(<a href="../../../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.922">majorCompact</a>(<a href="../../../../../ [...]
                                             <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#majorCompact-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.CompactType-">AsyncAdmin</a></code></span></div>
 <div class="block">Major compact a table. When the returned CompletableFuture is done, it only means the compact
@@ -2430,7 +2430,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompact</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.914">majorCompact</a>(<a href="../../../../../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.927">majorCompact</a>(<a href="../../../../../ [...]
                                             byte[]&nbsp;columnFamily,
                                             <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#majorCompact-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.client.CompactType-">AsyncAdmin</a></code></span></div>
@@ -2454,7 +2454,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.922">majorCompactRegion</a>(byte[]&nbsp;region [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.935">majorCompactRegion</a>(byte[]&nbsp;region [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#majorCompactRegion-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Major compact a region. When the returned CompletableFuture is done, it only means the compact
  request was sent to HBase and may need some time to finish the compact operation.</div>
@@ -2472,7 +2472,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.927">majorCompactRegion</a>(byte[]&nbsp;regionName,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.940">majorCompactRegion</a>(byte[]&nbsp;regionName,
                                                   byte[]&nbsp;columnFamily)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#majorCompactRegion-byte:A-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Major compact a column family within region. When the returned CompletableFuture is done, it
@@ -2494,7 +2494,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRegionServer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.934">compactRegionServer</a>(<a href="../../.. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.947">compactRegionServer</a>(<a href="../../.. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#compactRegionServer-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Compact all regions on the region server.</div>
 <dl>
@@ -2511,7 +2511,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactRegionServer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.939">majorCompactRegionServer</a>(<a href="../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.952">majorCompactRegionServer</a>(<a href="../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#majorCompactRegionServer-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Compact all regions on the region server.</div>
 <dl>
@@ -2528,7 +2528,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRegionServer</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.943">compactRegionServer</a>(<a href="../../. [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.956">compactRegionServer</a>(<a href="../../. [...]
                                                     boolean&nbsp;major)</pre>
 </li>
 </ul>
@@ -2538,7 +2538,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRegion</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.966">compactRegion</a>(byte[]&nbsp;regionName,
+<pre>private&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/RawAsyncHBaseAdmin.html#line.979">compactRegion</a>(byte[]&nbsp;regionName,
                                               byte[]&nbsp;columnFamily,
                                               boolean&nbsp;major)</pre>
 </li>
@@ -2549,7 +2549,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableHRegionLocations</h4>
-<pre>private&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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&gt;&nbsp; [...]
+<pre>private&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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&gt;&nbsp; [...]
 <div class="block">List all region locations for the specific table.</div>
 </li>
 </ul>
@@ -2559,7 +2559,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1022">compact</a>(<a href="../../../../../org [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1035">compact</a>(<a href="../../../../../org [...]
                                         byte[]&nbsp;columnFamily,
                                         boolean&nbsp;major,
                                         <a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client">CompactType</a>&nbsp;compactType)</pre>
@@ -2572,7 +2572,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1073">compact</a>(<a href="../../../../../org [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1086">compact</a>(<a href="../../../../../org [...]
                                         <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                                         boolean&nbsp;major,
                                         byte[]&nbsp;columnFamily)</pre>
@@ -2585,7 +2585,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>toEncodeRegionName</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1085">toEncodeRegionName</a>(byte[]&nbsp;regionName)</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1098">toEncodeRegionName</a>(byte[]&nbsp;regionName)</pre>
 </li>
 </ul>
 <a name="checkAndGetTableName-byte:A-java.util.concurrent.atomic.AtomicReference-java.util.concurrent.CompletableFuture-">
@@ -2594,7 +2594,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndGetTableName</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1094">checkAndGetTableName</a>(byte[]&nbsp;encodeRegionName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1107">checkAndGetTableName</a>(byte[]&nbsp;encodeRegionName,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableName,
                                   <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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;result)</pre>
 </li>
@@ -2605,7 +2605,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>checkRegionsAndGetTableName</h4>
-<pre>private&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1120">checkRegionsAndGetTableName</a>(byte[]&nbsp;encodeRegionNameA,
+<pre>private&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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1133">checkRegionsAndGetTableName</a>(byte[]&nbsp;encodeRegionNameA,
                                                                  byte[]&nbsp;encodeRegionNameB)</pre>
 </li>
 </ul>
@@ -2615,7 +2615,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeSwitch</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1131">mergeSwitch</a>(boolean&nbsp;on)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1144">mergeSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeSwitch-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Turn the Merge switch on or off.</div>
 <dl>
@@ -2632,7 +2632,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isMergeEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1136">isMergeEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1149">isMergeEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isMergeEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Query the current state of the Merge switch.</div>
 <dl>
@@ -2650,7 +2650,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitSwitch</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1141">splitSwitch</a>(boolean&nbsp;on)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1154">splitSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#splitSwitch-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Turn the Split switch on or off.</div>
 <dl>
@@ -2667,7 +2667,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplitEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1146">isSplitEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1159">isSplitEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isSplitEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Query the current state of the Split switch.</div>
 <dl>
@@ -2685,7 +2685,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>setSplitOrMergeOn</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1150">setSplitOrMergeOn</a>(boolean&nbsp;on,
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1163">setSplitOrMergeOn</a>(boolean&nbsp;on,
                                                      <a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;switchType)</pre>
 </li>
 </ul>
@@ -2695,7 +2695,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplitOrMergeOn</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1162">isSplitOrMergeOn</a>(<a href="../ [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1175">isSplitOrMergeOn</a>(<a href="../ [...]
 </li>
 </ul>
 <a name="mergeRegions-byte:A-byte:A-boolean-">
@@ -2704,7 +2704,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegions</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1176">mergeRegions</a>(byte[]&nbsp;nameOfRegionA,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1189">mergeRegions</a>(byte[]&nbsp;nameOfRegionA,
                                             byte[]&nbsp;nameOfRegionB,
                                             boolean&nbsp;forcible)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#mergeRegions-byte:A-byte:A-boolean-">AsyncAdmin</a></code></span></div>
@@ -2726,7 +2726,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1215">split</a>(<a href="../../../../../org/ap [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1228">split</a>(<a href="../../../../../org/ap [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#split-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Split a table. The method will execute split action for each region in table.</div>
 <dl>
@@ -2743,7 +2743,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1275">split</a>(<a href="../../../../../org/ap [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1288">split</a>(<a href="../../../../../org/ap [...]
                                      byte[]&nbsp;splitPoint)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#split-org.apache.hadoop.hbase.TableName-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Split a table.</div>
@@ -2762,7 +2762,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1302">splitRegion</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1315">splitRegion</a>(byte[]&nbsp;regionName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#splitRegion-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Split an individual region.</div>
 <dl>
@@ -2779,7 +2779,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1330">splitRegion</a>(byte[]&nbsp;regionName,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1343">splitRegion</a>(byte[]&nbsp;regionName,
                                            byte[]&nbsp;splitPoint)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#splitRegion-byte:A-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Split an individual region.</div>
@@ -2799,7 +2799,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1365">split</a>(<a href="../../../../../org/a [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1378">split</a>(<a href="../../../../../org/a [...]
                                       byte[]&nbsp;splitPoint)</pre>
 </li>
 </ul>
@@ -2809,7 +2809,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>assign</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1390">assign</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1403">assign</a>(byte[]&nbsp;regionName)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#assign-byte:A-">assign</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -2824,7 +2824,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>unassign</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1413">unassign</a>(byte[]&nbsp;regionName,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1426">unassign</a>(byte[]&nbsp;regionName,
                                         boolean&nbsp;forcible)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#unassign-byte:A-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Unassign a region from current hosting regionserver. Region will then be assigned to a
@@ -2848,7 +2848,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>offline</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1439">offline</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1452">offline</a>(byte[]&nbsp;regionName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#offline-byte:A-">AsyncAdmin</a></code></span></div>
 <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
@@ -2869,7 +2869,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>move</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1465">move</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1478">move</a>(byte[]&nbsp;regionName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#move-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Move the region <code>r</code> to a random server.</div>
 <dl>
@@ -2886,7 +2886,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>move</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1487">move</a>(byte[]&nbsp;regionName,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1500">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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#move-byte:A-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Move the region <code>r</code> to <code>dest</code>.</div>
@@ -2907,7 +2907,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>moveRegion</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1509">moveRegion</a>(org.apache.hadoop.hbase. [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1522">moveRegion</a>(org.apache.hadoop.hbase. [...]
 </li>
 </ul>
 <a name="setQuota-org.apache.hadoop.hbase.quotas.QuotaSettings-">
@@ -2916,7 +2916,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>setQuota</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1518">setQuota</a>(<a href="../../../../../org [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1531">setQuota</a>(<a href="../../../../../org [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#setQuota-org.apache.hadoop.hbase.quotas.QuotaSettings-">AsyncAdmin</a></code></span></div>
 <div class="block">Apply the new quota settings.</div>
 <dl>
@@ -2933,7 +2933,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuota</h4>
-<pre>public&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/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&gt;& [...]
+<pre>public&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/quotas/QuotaSettings.html" title="class in org.apache.hadoop.hbase.quotas">QuotaSettings</a>&gt;& [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getQuota-org.apache.hadoop.hbase.quotas.QuotaFilter-">AsyncAdmin</a></code></span></div>
 <div class="block">List the quotas based on the filter.</div>
 <dl>
@@ -2952,7 +2952,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1561">addReplicationPeer</a>(<a href="https:// [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1574">addReplicationPeer</a>(<a href="https:// [...]
                                                   <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">AsyncAdmin</a></code></span></div>
@@ -2973,7 +2973,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1570">removeReplicationPeer</a>(<a href="https [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1583">removeReplicationPeer</a>(<a href="https [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#removeReplicationPeer-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Remove a peer and stop the replication</div>
 <dl>
@@ -2990,7 +2990,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>enableReplicationPeer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1578">enableReplicationPeer</a>(<a href="https [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1591">enableReplicationPeer</a>(<a href="https [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#enableReplicationPeer-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Restart the replication stream to the specified peer</div>
 <dl>
@@ -3007,7 +3007,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>disableReplicationPeer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1586">disableReplicationPeer</a>(<a href="http [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1599">disableReplicationPeer</a>(<a href="http [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#disableReplicationPeer-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Stop the replication stream to the specified peer</div>
 <dl>
@@ -3024,7 +3024,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerConfig</h4>
-<pre>public&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/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1594">getReplicat [...]
+<pre>public&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/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1607">getReplicat [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getReplicationPeerConfig-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Returns the configured ReplicationPeerConfig for the specified peer</div>
 <dl>
@@ -3043,7 +3043,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReplicationPeerConfig</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1604">updateReplicationPeerConfig</a>(<a href= [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1617">updateReplicationPeerConfig</a>(<a href= [...]
                                                            <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">AsyncAdmin</a></code></span></div>
 <div class="block">Update the peerConfig for the specified peer</div>
@@ -3062,7 +3062,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>transitReplicationPeerSyncReplicationState</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1615">transitReplicationPeerSyncReplicationSta [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1628">transitReplicationPeerSyncReplicationSta [...]
                                                                           <a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;clusterState)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#transitReplicationPeerSyncReplicationState-java.lang.String-org.apache.hadoop.hbase.replication.SyncReplicationState-">AsyncAdmin</a></code></span></div>
 <div class="block">Transit current cluster to a new state in a synchronous replication peer.</div>
@@ -3081,7 +3081,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>appendReplicationPeerTableCFs</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1627">appendReplicationPeerTableCFs</a>(<a hre [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1640">appendReplicationPeerTableCFs</a>(<a hre [...]
                                                              <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 [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#appendReplicationPeerTableCFs-java.lang.String-java.util.Map-">AsyncAdmin</a></code></span></div>
 <div class="block">Append the replicable table-cf config of the specified peer</div>
@@ -3100,7 +3100,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeerTableCFs</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1649">removeReplicationPeerTableCFs</a>(<a hre [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1662">removeReplicationPeerTableCFs</a>(<a hre [...]
                                                              <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 [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#removeReplicationPeerTableCFs-java.lang.String-java.util.Map-">AsyncAdmin</a></code></span></div>
 <div class="block">Remove some table-cfs from config of the specified peer</div>
@@ -3119,7 +3119,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre>public&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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication" [...]
+<pre>public&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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication" [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listReplicationPeers--">AsyncAdmin</a></code></span></div>
 <div class="block">Return a list of replication peers.</div>
 <dl>
@@ -3137,7 +3137,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre>public&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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication" [...]
+<pre>public&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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication" [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listReplicationPeers-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">Return a list of replication peers.</div>
 <dl>
@@ -3157,7 +3157,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre>private&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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication [...]
+<pre>private&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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication [...]
 </li>
 </ul>
 <a name="listReplicatedTableCFs--">
@@ -3166,7 +3166,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicatedTableCFs</h4>
-<pre>public&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/client/replication/TableCFs.html" title="class in org.apache.hadoop.hbase.client.replication">Tab [...]
+<pre>public&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/client/replication/TableCFs.html" title="class in org.apache.hadoop.hbase.client.replication">Tab [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listReplicatedTableCFs--">AsyncAdmin</a></code></span></div>
 <div class="block">Find all table and column families that are replicated from this cluster</div>
 <dl>
@@ -3184,7 +3184,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1728">snapshot</a>(<a href="../../../../../org [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1741">snapshot</a>(<a href="../../../../../org [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#snapshot-org.apache.hadoop.hbase.client.SnapshotDescription-">AsyncAdmin</a></code></span></div>
 <div class="block">Take a snapshot and wait for the server to complete that snapshot asynchronously. Only a single
  snapshot should be taken at a time for an instance of HBase, or results may be undefined (you
@@ -3210,7 +3210,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isSnapshotFinished</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1783">isSnapshotFinished</a>(<a href=".. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1796">isSnapshotFinished</a>(<a href=".. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isSnapshotFinished-org.apache.hadoop.hbase.client.SnapshotDescription-">AsyncAdmin</a></code></span></div>
 <div class="block">Check the current state of the passed snapshot. There are three possible states:
  <ol>
@@ -3238,7 +3238,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1796">restoreSnapshot</a>(<a href="https://doc [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1809">restoreSnapshot</a>(<a href="https://doc [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#restoreSnapshot-java.lang.String-">AsyncAdmin</a></code></span></div>
 <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
@@ -3259,7 +3259,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1804">restoreSnapshot</a>(<a href="https://doc [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1817">restoreSnapshot</a>(<a href="https://doc [...]
                                                boolean&nbsp;takeFailSafeSnapshot)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#restoreSnapshot-java.lang.String-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Restore the specified snapshot on the original table. (The table must be disabled) If
@@ -3283,7 +3283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1851">restoreSnapshot</a>(<a href="https://do [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1864">restoreSnapshot</a>(<a href="https://do [...]
                                                 <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                                 boolean&nbsp;takeFailSafeSnapshot)</pre>
 </li>
@@ -3294,7 +3294,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>completeConditionalOnFuture</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1906">completeConditionalOnFuture</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;T&gt;&nbsp;dependentFuture,
+<pre>private&nbsp;&lt;T&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.1919">completeConditionalOnFuture</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;T&gt;&nbsp;dependentFuture,
                                              <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;T&gt;&nbsp;parentFuture)</pre>
 </li>
 </ul>
@@ -3304,7 +3304,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshot</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.1918">cloneSnapshot</a>(<a href="https://docs. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.1931">cloneSnapshot</a>(<a href="https://docs. [...]
                                              <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#cloneSnapshot-java.lang.String-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Create a new table by cloning the snapshot content.</div>
@@ -3323,7 +3323,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>internalRestoreSnapshot</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.1932">internalRestoreSnapshot</a>(<a href="ht [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.1945">internalRestoreSnapshot</a>(<a href="ht [...]
                                                         <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
@@ -3333,7 +3333,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listSnapshots</h4>
-<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
+<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listSnapshots--">AsyncAdmin</a></code></span></div>
 <div class="block">List completed snapshots.</div>
 <dl>
@@ -3351,7 +3351,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listSnapshots</h4>
-<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
+<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listSnapshots-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">List all the completed snapshots matching the given pattern.</div>
 <dl>
@@ -3370,7 +3370,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompletedSnapshots</h4>
-<pre>private&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescrip [...]
+<pre>private&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescrip [...]
 </li>
 </ul>
 <a name="listTableSnapshots-java.util.regex.Pattern-">
@@ -3379,7 +3379,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableSnapshots</h4>
-<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
+<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableSnapshots-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">List all the completed snapshots matching the given table name pattern.</div>
 <dl>
@@ -3399,7 +3399,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableSnapshots</h4>
-<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
+<pre>public&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescript [...]
                                                                        <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listTableSnapshots-java.util.regex.Pattern-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">List all the completed snapshots matching the given table name regular expression and snapshot
@@ -3422,7 +3422,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompletedSnapshots</h4>
-<pre>private&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescrip [...]
+<pre>private&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/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client">SnapshotDescrip [...]
                                                                            <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>
 </li>
 </ul>
@@ -3432,7 +3432,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshot</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2017">deleteSnapshot</a>(<a href="https://docs [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2030">deleteSnapshot</a>(<a href="https://docs [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteSnapshot-java.lang.String-">AsyncAdmin</a></code></span></div>
 <div class="block">Delete an existing snapshot.</div>
 <dl>
@@ -3449,7 +3449,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshots</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2022">deleteSnapshots</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2035">deleteSnapshots</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteSnapshots--">AsyncAdmin</a></code></span></div>
 <div class="block">Delete all existing snapshots.</div>
 <dl>
@@ -3464,7 +3464,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshots</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2027">deleteSnapshots</a>(<a href="https://doc [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2040">deleteSnapshots</a>(<a href="https://doc [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteSnapshots-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">Delete existing snapshots whose names match the pattern passed.</div>
 <dl>
@@ -3481,7 +3481,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableSnapshots</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2034">deleteTableSnapshots</a>(<a href="https: [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2047">deleteTableSnapshots</a>(<a href="https: [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteTableSnapshots-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">Delete all existing snapshots matching the given table name pattern.</div>
 <dl>
@@ -3498,7 +3498,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTableSnapshots</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2041">deleteTableSnapshots</a>(<a href="https: [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2054">deleteTableSnapshots</a>(<a href="https: [...]
                                                     <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#deleteTableSnapshots-java.util.regex.Pattern-java.util.regex.Pattern-">AsyncAdmin</a></code></span></div>
 <div class="block">Delete all existing snapshots matching the given table name regular expression and snapshot
@@ -3518,7 +3518,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>internalDeleteSnapshots</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.2050">internalDeleteSnapshots</a>(<a href="ht [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.2063">internalDeleteSnapshots</a>(<a href="ht [...]
                                                         <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>
 </li>
 </ul>
@@ -3528,7 +3528,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>internalDeleteSnapshot</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.2080">internalDeleteSnapshot</a>(<a href="../ [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.2093">internalDeleteSnapshot</a>(<a href="../ [...]
 </li>
 </ul>
 <a name="execProcedure-java.lang.String-java.lang.String-java.util.Map-">
@@ -3537,7 +3537,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedure</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2093">execProcedure</a>(<a href="https://docs. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2106">execProcedure</a>(<a href="https://docs. [...]
                                              <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#execProcedure-java.lang.String-java.lang.String-java.util.Map-">AsyncAdmin</a></code></span></div>
@@ -3560,7 +3560,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedureWithReturn</h4>
-<pre>public&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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2145">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>&n [...]
+<pre>public&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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2158">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>&n [...]
                                                          <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;pro [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#execProcedureWithReturn-java.lang.String-java.lang.String-java.util.Map-">AsyncAdmin</a></code></span></div>
@@ -3585,7 +3585,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isProcedureFinished</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2159">isProcedureFinished</a>(<a href="h [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2172">isProcedureFinished</a>(<a href="h [...]
                                                       <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isProcedureFinished-java.lang.String-java.lang.String-java.util.Map-">AsyncAdmin</a></code></span></div>
@@ -3614,7 +3614,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>abortProcedure</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2172">abortProcedure</a>(long&nbsp;procId,
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2185">abortProcedure</a>(long&nbsp;procId,
                                                  boolean&nbsp;mayInterruptIfRunning)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#abortProcedure-long-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Abort a procedure
@@ -3637,7 +3637,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedures</h4>
-<pre>public&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/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/RawAsyncHBaseAdmin.html#line.2181">getProcedures</a>()</pre>
+<pre>public&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/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/RawAsyncHBaseAdmin.html#line.2194">getProcedures</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getProcedures--">AsyncAdmin</a></code></span></div>
 <div class="block">List procedures</div>
 <dl>
@@ -3654,7 +3654,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getLocks</h4>
-<pre>public&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/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/RawAsyncHBaseAdmin.html#line.2193">getLocks</a>()</pre>
+<pre>public&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/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/RawAsyncHBaseAdmin.html#line.2206">getLocks</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getLocks--">AsyncAdmin</a></code></span></div>
 <div class="block">List locks.</div>
 <dl>
@@ -3671,7 +3671,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>decommissionRegionServers</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2204">decommissionRegionServers</a>(<a href="h [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2217">decommissionRegionServers</a>(<a href="h [...]
                                                          boolean&nbsp;offload)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#decommissionRegionServers-java.util.List-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Mark region server(s) as decommissioned to prevent additional regions from getting
@@ -3693,7 +3693,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>listDecommissionedRegionServers</h4>
-<pre>public&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>public&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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#listDecommissionedRegionServers--">AsyncAdmin</a></code></span></div>
 <div class="block">List region servers marked as decommissioned, which can not be assigned regions.</div>
 <dl>
@@ -3710,7 +3710,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>recommissionRegionServer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2227">recommissionRegionServer</a>(<a href=".. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2240">recommissionRegionServer</a>(<a href=".. [...]
                                                         <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">AsyncAdmin</a></code></span></div>
 <div class="block">Remove decommission marker from a region server to allow regions assignments. Load regions onto
@@ -3730,7 +3730,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocation</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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2245">getRegionLocation</a>(byte[]&nbsp;regionNameOrEncodedRegion [...]
+<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/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2258">getRegionLocation</a>(byte[]&nbsp;regionNameOrEncodedRegion [...]
 <div class="block">Get the region location for the passed region name. The region name may be a full region name
  or encoded region name. If the region does not found, then it'll throw an
  UnknownRegionException wrapped by 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"><code>CompletableFuture</code></a></div>
@@ -3748,7 +3748,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>private&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/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2285">getRegionInfo</a>(byte[]&nbsp;regionNa [...]
+<pre>private&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/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2298">getRegionInfo</a>(byte[]&nbsp;regionNa [...]
 <div class="block">Get the region info for the passed region name. The region name may be a full region name or
  encoded region name. If the region does not found, then it'll throw an UnknownRegionException
  wrapped by 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"><code>CompletableFuture</code></a></div>
@@ -3766,7 +3766,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitKeys</h4>
-<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2308">getSplitKeys</a>(byte[]&nbsp;startKey,
+<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2321">getSplitKeys</a>(byte[]&nbsp;startKey,
                               byte[]&nbsp;endKey,
                               int&nbsp;numRegions)</pre>
 </li>
@@ -3777,7 +3777,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>verifySplitKeys</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2324">verifySplitKeys</a>(byte[][]&nbsp;splitKeys)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2337">verifySplitKeys</a>(byte[][]&nbsp;splitKeys)</pre>
 </li>
 </ul>
 <a name="waitProcedureResult-java.util.concurrent.CompletableFuture-">
@@ -3786,7 +3786,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>waitProcedureResult</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.2603">waitProcedureResult</a>(<a href="https: [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.2616">waitProcedureResult</a>(<a href="https: [...]
 </li>
 </ul>
 <a name="getProcedureResult-long-java.util.concurrent.CompletableFuture-int-">
@@ -3795,7 +3795,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedureResult</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2615">getProcedureResult</a>(long&nbsp;procId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2628">getProcedureResult</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/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;future,
                                 int&nbsp;retries)</pre>
 </li>
@@ -3806,7 +3806,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>failedFuture</h4>
-<pre>private&nbsp;&lt;T&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;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2645">failedFuture</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable [...]
+<pre>private&nbsp;&lt;T&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;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2658">failedFuture</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable [...]
 </li>
 </ul>
 <a name="completeExceptionally-java.util.concurrent.CompletableFuture-java.lang.Throwable-">
@@ -3815,7 +3815,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>completeExceptionally</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2651">completeExceptionally</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;T&gt;&nbsp;future,
+<pre>private&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2664">completeExceptionally</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;T&gt;&nbsp;future,
                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 </li>
 </ul>
@@ -3825,7 +3825,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterMetrics</h4>
-<pre>public&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/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2660">getClusterMetrics</a>()</pre>
+<pre>public&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/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2673">getClusterMetrics</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getClusterMetrics--">getClusterMetrics</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -3840,7 +3840,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterMetrics</h4>
-<pre>public&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/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2665">getClusterMetrics</a>(<a href="https://docs.o [...]
+<pre>public&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/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.2678">getClusterMetrics</a>(<a href="https://docs.o [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -3855,7 +3855,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2677">shutdown</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2690">shutdown</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#shutdown--">AsyncAdmin</a></code></span></div>
 <div class="block">Shuts down the HBase cluster.</div>
 <dl>
@@ -3870,7 +3870,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>stopMaster</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2687">stopMaster</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2700">stopMaster</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#stopMaster--">AsyncAdmin</a></code></span></div>
 <div class="block">Shuts down the current HBase master only.</div>
 <dl>
@@ -3885,7 +3885,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRegionServer</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2697">stopRegionServer</a>(<a href="../../../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2710">stopRegionServer</a>(<a href="../../../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#stopRegionServer-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Stop the designated regionserver.</div>
 <dl>
@@ -3900,7 +3900,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>updateConfiguration</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2710">updateConfiguration</a>(<a href="../../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2723">updateConfiguration</a>(<a href="../../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#updateConfiguration-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Update the configuration and trigger an online config change on the regionserver.</div>
 <dl>
@@ -3917,7 +3917,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>updateConfiguration</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2722">updateConfiguration</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2735">updateConfiguration</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#updateConfiguration--">AsyncAdmin</a></code></span></div>
 <div class="block">Update the configuration and trigger an online config change on all the masters and
  regionservers.</div>
@@ -3933,7 +3933,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWALWriter</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2750">rollWALWriter</a>(<a href="../../../../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2763">rollWALWriter</a>(<a href="../../../../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#rollWALWriter-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <div class="block">Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.
  <p>
@@ -3955,7 +3955,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactionQueues</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2761">clearCompactionQueues</a>(<a href="../.. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2774">clearCompactionQueues</a>(<a href="../.. [...]
                                                      <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#clearCompactionQueues-org.apache.hadoop.hbase.ServerName-java.util.Set-">AsyncAdmin</a></code></span></div>
 <div class="block">Clear compacting queues on a region server.</div>
@@ -3972,7 +3972,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getSecurityCapabilities</h4>
-<pre>public&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/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security"> [...]
+<pre>public&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/client/security/SecurityCapability.html" title="enum in org.apache.hadoop.hbase.client.security"> [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getSecurityCapabilities--">getSecurityCapabilities</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a></code></dd>
@@ -3988,7 +3988,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre>public&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/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;< [...]
+<pre>public&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/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;< [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getRegionMetrics-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
 <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>
@@ -4005,7 +4005,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre>public&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/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;< [...]
+<pre>public&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/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp;< [...]
                                                                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getRegionMetrics-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <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>
@@ -4023,7 +4023,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionMetrics</h4>
-<pre>private&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/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp; [...]
+<pre>private&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/RegionMetrics.html" title="interface in org.apache.hadoop.hbase">RegionMetrics</a>&gt;&gt;&nbsp; [...]
                                                                 <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
@@ -4033,7 +4033,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isMasterInMaintenanceMode</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2808">isMasterInMaintenanceMode</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2821">isMasterInMaintenanceMode</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isMasterInMaintenanceMode--">AsyncAdmin</a></code></span></div>
 <div class="block">Check whether master is in maintenance mode</div>
 <dl>
@@ -4051,7 +4051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionState</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2820">getCompactionState</a>(<a href=".. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2833">getCompactionState</a>(<a href=".. [...]
                                                              <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getCompactionState-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.CompactType-">AsyncAdmin</a></code></span></div>
 <div class="block">Get the current compaction state of a table. It could be in a major compaction, a minor
@@ -4073,7 +4073,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionStateForRegion</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.2916">getCompactionStateForRegion</a>(by [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.2929">getCompactionStateForRegion</a>(by [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getCompactionStateForRegion-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Get the current compaction state of region. It could be in a major compaction, a minor
  compaction, both, or none.</div>
@@ -4093,7 +4093,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestamp</h4>
-<pre>public&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/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> [...]
+<pre>public&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/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> [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Get the timestamp of the last major compaction for the passed table.
  <p>
@@ -4115,7 +4115,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestampForRegion</h4>
-<pre>public&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/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> [...]
+<pre>public&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/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> [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#getLastMajorCompactionTimestampForRegion-byte:A-">AsyncAdmin</a></code></span></div>
 <div class="block">Get the timestamp of the last major compaction for the passed region.
  <p>
@@ -4137,7 +4137,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionSwitch</h4>
-<pre>public&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/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.orac [...]
+<pre>public&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/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.orac [...]
                                                                    <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#compactionSwitch-boolean-java.util.List-">AsyncAdmin</a></code></span></div>
 <div class="block">Turn the compaction on or off. Disabling compactions will also interrupt any currently ongoing
@@ -4161,7 +4161,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServerList</h4>
-<pre>private&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>private&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=". [...]
 </li>
 </ul>
 <a name="switchCompact-org.apache.hadoop.hbase.ServerName-boolean-">
@@ -4170,7 +4170,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>switchCompact</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.3068">switchCompact</a>(<a href="../../ [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.3081">switchCompact</a>(<a href="../../ [...]
                                                  boolean&nbsp;onOrOff)</pre>
 </li>
 </ul>
@@ -4180,7 +4180,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerSwitch</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3079">balancerSwitch</a>(boolean&nbsp;on)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3092">balancerSwitch</a>(boolean&nbsp;on)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#balancerSwitch-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Turn the load balancer on or off.</div>
 <dl>
@@ -4197,7 +4197,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>balance</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3091">balance</a>(boolean&nbsp;forcible)</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3104">balance</a>(boolean&nbsp;forcible)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#balance-boolean-">AsyncAdmin</a></code></span></div>
 <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
@@ -4219,7 +4219,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isBalancerEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3101">isBalancerEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3114">isBalancerEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isBalancerEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Query the current state of the balancer.</div>
 <dl>
@@ -4237,7 +4237,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizerSwitch</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3112">normalizerSwitch</a>(boolean&nbsp; [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3125">normalizerSwitch</a>(boolean&nbsp; [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#normalizerSwitch-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Set region normalizer on/off.</div>
 <dl>
@@ -4256,7 +4256,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isNormalizerEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3124">isNormalizerEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3137">isNormalizerEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isNormalizerEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Query the current state of the region normalizer</div>
 <dl>
@@ -4274,7 +4274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>normalize</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3136">normalize</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3149">normalize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#normalize--">AsyncAdmin</a></code></span></div>
 <div class="block">Invoke region normalizer. Can NOT run for various reasons. Check logs.</div>
 <dl>
@@ -4292,7 +4292,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanerChoreSwitch</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3147">cleanerChoreSwitch</a>(boolean&nbs [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3160">cleanerChoreSwitch</a>(boolean&nbs [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#cleanerChoreSwitch-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Turn the cleaner chore on/off.</div>
 <dl>
@@ -4309,7 +4309,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isCleanerChoreEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3159">isCleanerChoreEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3172">isCleanerChoreEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isCleanerChoreEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Query the current state of the cleaner chore.</div>
 <dl>
@@ -4327,7 +4327,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>runCleanerChore</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3171">runCleanerChore</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3184">runCleanerChore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#runCleanerChore--">AsyncAdmin</a></code></span></div>
 <div class="block">Ask for cleaner chore to run.</div>
 <dl>
@@ -4345,7 +4345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorSwitch</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3183">catalogJanitorSwitch</a>(boolean&n [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3196">catalogJanitorSwitch</a>(boolean&n [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#catalogJanitorSwitch-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Turn the catalog janitor on/off.</div>
 <dl>
@@ -4362,7 +4362,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isCatalogJanitorEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3195">isCatalogJanitorEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3208">isCatalogJanitorEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isCatalogJanitorEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Query on the catalog janitor state.</div>
 <dl>
@@ -4380,7 +4380,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>runCatalogJanitor</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3207">runCatalogJanitor</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3220">runCatalogJanitor</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#runCatalogJanitor--">AsyncAdmin</a></code></span></div>
 <div class="block">Ask for a scan of the catalog table.</div>
 <dl>
@@ -4398,7 +4398,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>public&nbsp;&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/RawAsyncHBaseAdmin.html#line.3218">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. [...]
+<pre>public&nbsp;&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/RawAsyncHBaseAdmin.html#line.3231">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. [...]
                                                      <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#coprocessorService-java.util.function.Function-org.apache.hadoop.hbase.client.ServiceCaller-">AsyncAdmin</a></code></span></div>
 <div class="block">Execute the given coprocessor call on the master.
@@ -4434,7 +4434,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorService</h4>
-<pre>public&nbsp;&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/RawAsyncHBaseAdmin.html#line.3236">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. [...]
+<pre>public&nbsp;&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/RawAsyncHBaseAdmin.html#line.3249">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. [...]
                                                      <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#coprocessorService-java.util.function.Function-org.apache.hadoop.hbase.client.ServiceCaller-org.apache.hadoop.hbase.ServerName-">AsyncAdmin</a></code></span></div>
@@ -4472,7 +4472,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>clearDeadServers</h4>
-<pre>public&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>public&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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#clearDeadServers-java.util.List-">AsyncAdmin</a></code></span></div>
 <div class="block">Clear dead region servers from master.</div>
 <dl>
@@ -4491,7 +4491,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>newServerCaller</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRpcRetryingCallerFactory.ServerRequestCallerBuilder.html" title="class in org.apache.hadoop.hbase.client">AsyncRpcRetryingCallerFactory.ServerRequestCallerBuilder</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3265">newServerCaller</a>()</pre>
+<pre>private&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRpcRetryingCallerFactory.ServerRequestCallerBuilder.html" title="class in org.apache.hadoop.hbase.client">AsyncRpcRetryingCallerFactory.ServerRequestCallerBuilder</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3278">newServerCaller</a>()</pre>
 </li>
 </ul>
 <a name="enableTableReplication-org.apache.hadoop.hbase.TableName-">
@@ -4500,7 +4500,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTableReplication</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3274">enableTableReplication</a>(<a href="../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3287">enableTableReplication</a>(<a href="../. [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#enableTableReplication-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Enable a table's replication switch.</div>
 <dl>
@@ -4517,7 +4517,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTableReplication</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3313">disableTableReplication</a>(<a href="../ [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3326">disableTableReplication</a>(<a href="../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#disableTableReplication-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <div class="block">Disable a table's replication switch.</div>
 <dl>
@@ -4534,7 +4534,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableSplits</h4>
-<pre>private&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;byte[][]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3339">getTableSplits</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>private&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;byte[][]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3352">getTableSplits</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="checkAndSyncTableToPeerClusters-org.apache.hadoop.hbase.TableName-byte:A:A-">
@@ -4543,7 +4543,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndSyncTableToPeerClusters</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.3370">checkAndSyncTableToPeerClusters</a>(<a  [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.3383">checkAndSyncTableToPeerClusters</a>(<a  [...]
                                                                 byte[][]&nbsp;splits)</pre>
 <div class="block">Connect to peer and check the table descriptor on peer:
  <ol>
@@ -4565,7 +4565,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>trySyncTableToPeerCluster</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.3401">trySyncTableToPeerCluster</a>(<a href=" [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.3414">trySyncTableToPeerCluster</a>(<a href=" [...]
                                                           byte[][]&nbsp;splits,
                                                           <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&nbsp;peer)</pre>
 </li>
@@ -4576,7 +4576,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTableWithPeerCluster</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.3457">compareTableWithPeerCluster</a>(<a href [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.3470">compareTableWithPeerCluster</a>(<a href [...]
                                                             <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDesc,
                                                             <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&nbsp;peer,
                                                             <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html" title="interface in org.apache.hadoop.hbase.client">AsyncAdmin</a>&nbsp;peerAdmin)</pre>
@@ -4588,7 +4588,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>setTableReplication</h4>
-<pre>private&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/RawAsyncHBaseAdmin.html#line.3488">setTableReplication</a>(<a href="../../ [...]
+<pre>private&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/RawAsyncHBaseAdmin.html#line.3501">setTableReplication</a>(<a href="../../ [...]
                                                     boolean&nbsp;enableRep)</pre>
 <div class="block">Set the table's replication switch if the table's replication switch is already not set.</div>
 <dl>
@@ -4604,7 +4604,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>clearBlockCache</h4>
-<pre>public&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/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase">CacheEvictionStats</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3515">clearBlockCache</a>(<a href="../../../../ [...]
+<pre>public&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/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase">CacheEvictionStats</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3528">clearBlockCache</a>(<a href="../../../../ [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#clearBlockCache-org.apache.hadoop.hbase.TableName-">AsyncAdmin</a></code></span></div>
 <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
@@ -4626,7 +4626,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneTableSchema</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3552">cloneTableSchema</a>(<a href="../../../. [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3565">cloneTableSchema</a>(<a href="../../../. [...]
                                                 <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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#cloneTableSchema-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-boolean-">AsyncAdmin</a></code></span></div>
@@ -4647,7 +4647,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>clearBlockCache</h4>
-<pre>private&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/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase">CacheEvictionStats</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3608">clearBlockCache</a>(<a href="../../../.. [...]
+<pre>private&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/CacheEvictionStats.html" title="class in org.apache.hadoop.hbase">CacheEvictionStats</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#line.3621">clearBlockCache</a>(<a href="../../../.. [...]
                                                               <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;hris)</pre>
 </li>
 </ul>
@@ -4657,7 +4657,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>switchRpcThrottle</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3619">switchRpcThrottle</a>(boolean&nbsp [...]
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3632">switchRpcThrottle</a>(boolean&nbsp [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#switchRpcThrottle-boolean-">AsyncAdmin</a></code></span></div>
 <div class="block">Switch the rpc throttle enabled state.</div>
 <dl>
@@ -4676,7 +4676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isRpcThrottleEnabled</h4>
-<pre>public&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/RawAsyncHBaseAdmin.html#line.3631">isRpcThrottleEnabled</a>()</pre>
+<pre>public&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/RawAsyncHBaseAdmin.html#line.3644">isRpcThrottleEnabled</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncAdmin.html#isRpcThrottleEnabled--">AsyncAdmin</a></code></span></div>
 <div class="block">Get if the rpc throttle is enabled.</div>
 <dl>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html b/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html
index 8dacf5e..c68611a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.MetaTableScanResultConsumer.html
@@ -25,625 +25,619 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.TableName.META_TABLE_NAME;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Arrays;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.NavigableMap;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Optional;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.SortedMap;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.CompletableFuture;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.regex.Matcher;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.regex.Pattern;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.stream.Collectors;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.MetaTableAccessor.CollectingVisitor;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.MetaTableAccessor.QueryType;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.MetaTableAccessor.Visitor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.AdvancedScanResultConsumer;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.AsyncTable;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Get;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan.ReadType;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * The asynchronous meta table accessor. Used to read/write region and assignment information store<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * @since 2.0.0<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@InterfaceAudience.Private<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public class AsyncMetaTableAccessor {<a name="line.63"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.Map;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.NavigableMap;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Optional;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.SortedMap;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CompletableFuture;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.regex.Matcher;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.regex.Pattern;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.stream.Collectors;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaTableAccessor.CollectingVisitor;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.MetaTableAccessor.QueryType;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.MetaTableAccessor.Visitor;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.AdvancedScanResultConsumer;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.AsyncTable;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Get;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Result;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Scan.ReadType;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>/**<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * The asynchronous meta table accessor. Used to read/write region and assignment information store<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * @since 2.0.0<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@InterfaceAudience.Private<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class AsyncMetaTableAccessor {<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final Logger LOG = LoggerFactory.getLogger(AsyncMetaTableAccessor.class);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(AsyncMetaTableAccessor.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">065</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.66"></a>
 <span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final Pattern SERVER_COLUMN_PATTERN = Pattern<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      .compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public static CompletableFuture&lt;Boolean&gt; tableExists(AsyncTable&lt;?&gt; metaTable,<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      TableName tableName) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    if (tableName.equals(META_TABLE_NAME)) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return CompletableFuture.completedFuture(true);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    return getTableState(metaTable, tableName).thenApply(Optional::isPresent);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public static CompletableFuture&lt;Optional&lt;TableState&gt;&gt; getTableState(AsyncTable&lt;?&gt; metaTable,<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      TableName tableName) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    CompletableFuture&lt;Optional&lt;TableState&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    Get get = new Get(tableName.getName()).addColumn(getTableFamily(), getStateColumn());<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    try {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      get.setTimeRange(0, time);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      metaTable.get(get).whenComplete((result, error) -&gt; {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        if (error != null) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>          future.completeExceptionally(error);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          return;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        try {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>          future.complete(getTableState(result));<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        } catch (IOException e) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          future.completeExceptionally(e);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>        }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      });<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    } catch (IOException ioe) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      future.completeExceptionally(ioe);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    return future;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * Returns the HRegionLocation from meta for the given region<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @param metaTable<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * @param regionName region we're looking for<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @return HRegionLocation for the given region<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocation(<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      AsyncTable&lt;?&gt; metaTable, byte[] regionName) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    try {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      RegionInfo parsedRegionInfo = MetaTableAccessor.parseRegionInfoFromRegionName(regionName);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      metaTable.get(<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        new Get(MetaTableAccessor.getMetaKeyForRegion(parsedRegionInfo))<a name="line.119"></a>
-<span class="sourceLineNo">120</span>            .addFamily(HConstants.CATALOG_FAMILY)).whenComplete(<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        (r, err) -&gt; {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          if (err != null) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            future.completeExceptionally(err);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>            return;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>          future.complete(getRegionLocations(r).map(<a name="line.126"></a>
-<span class="sourceLineNo">127</span>            locations -&gt; locations.getRegionLocation(parsedRegionInfo.getReplicaId())));<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        });<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } catch (IOException parseEx) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      LOG.warn("Failed to parse the passed region name: " + Bytes.toStringBinary(regionName));<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      future.completeExceptionally(parseEx);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    return future;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * Returns the HRegionLocation from meta for the given encoded region name<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @param metaTable<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param encodedRegionName region we're looking for<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @return HRegionLocation for the given region<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocationWithEncodedName(<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      AsyncTable&lt;?&gt; metaTable, byte[] encodedRegionName) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    metaTable.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY))<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        .whenComplete(<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          (results, err) -&gt; {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>            if (err != null) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>              future.completeExceptionally(err);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              return;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>            }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>            String encodedRegionNameStr = Bytes.toString(encodedRegionName);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>            results<a name="line.153"></a>
-<span class="sourceLineNo">154</span>                .stream()<a name="line.154"></a>
-<span class="sourceLineNo">155</span>                .filter(result -&gt; !result.isEmpty())<a name="line.155"></a>
-<span class="sourceLineNo">156</span>                .filter(result -&gt; MetaTableAccessor.getRegionInfo(result) != null)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>                .forEach(<a name="line.157"></a>
-<span class="sourceLineNo">158</span>                  result -&gt; {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>                    getRegionLocations(result).ifPresent(<a name="line.159"></a>
-<span class="sourceLineNo">160</span>                      locations -&gt; {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>                        for (HRegionLocation location : locations.getRegionLocations()) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>                          if (location != null<a name="line.162"></a>
-<span class="sourceLineNo">163</span>                              &amp;&amp; encodedRegionNameStr.equals(location.getRegion()<a name="line.163"></a>
-<span class="sourceLineNo">164</span>                                  .getEncodedName())) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>                            future.complete(Optional.of(location));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>                            return;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>                          }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>                        }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>                      });<a name="line.169"></a>
-<span class="sourceLineNo">170</span>                  });<a name="line.170"></a>
-<span class="sourceLineNo">171</span>            future.complete(Optional.empty());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          });<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return future;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private static Optional&lt;TableState&gt; getTableState(Result r) throws IOException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    Cell cell = r.getColumnLatestCell(getTableFamily(), getStateColumn());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (cell == null) return Optional.empty();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return Optional.of(TableState.parseFrom(<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        TableName.valueOf(r.getRow()),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        Arrays.copyOfRange(cell.getValueArray(), cell.getValueOffset(), cell.getValueOffset()<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            + cell.getValueLength())));<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    } catch (DeserializationException e) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      throw new IOException("Failed to parse table state from result: " + r, e);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * Used to get all region locations for the specific table.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param metaTable<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @return the list of region locations. The return value will be wrapped by a<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   *         {@link CompletableFuture}.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public static CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; getTableHRegionLocations(<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, Optional&lt;TableName&gt; tableName) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    getTableRegionsAndLocations(metaTable, tableName, true).whenComplete(<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      (locations, err) -&gt; {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        if (err != null) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          future.completeExceptionally(err);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        } else if (locations == null || locations.isEmpty()) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          future.complete(Collections.emptyList());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        } else {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          List&lt;HRegionLocation&gt; regionLocations = locations.stream()<a name="line.206"></a>
-<span class="sourceLineNo">207</span>              .map(loc -&gt; new HRegionLocation(loc.getFirst(), loc.getSecond()))<a name="line.207"></a>
-<span class="sourceLineNo">208</span>              .collect(Collectors.toList());<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          future.complete(regionLocations);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      });<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return future;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * Used to get table regions' info and server.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param metaTable<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param excludeOfflinedSplitParents don't return split parents<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @return the list of regioninfos and server. The return value will be wrapped by a<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   *         {@link CompletableFuture}.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private static CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; getTableRegionsAndLocations(<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, final Optional&lt;TableName&gt; tableName,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      final boolean excludeOfflinedSplitParents) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (tableName.filter((t) -&gt; t.equals(TableName.META_TABLE_NAME)).isPresent()) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      future.completeExceptionally(new IOException(<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          "This method can't be used to locate meta regions;" + " use MetaTableLocator instead"));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // Make a version of CollectingVisitor that collects RegionInfo and ServerAddress<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; visitor = new CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;() {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      private Optional&lt;RegionLocations&gt; current = null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public boolean visit(Result r) throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        current = getRegionLocations(r);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        if (!current.isPresent() || current.get().getRegionLocation().getRegion() == null) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          LOG.warn("No serialized RegionInfo in " + r);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          return true;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        RegionInfo hri = current.get().getRegionLocation().getRegion();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (excludeOfflinedSplitParents &amp;&amp; hri.isSplitParent()) return true;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        // Else call super and add this Result to the collection.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        return super.visit(r);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>      @Override<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      void add(Result r) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        if (!current.isPresent()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          return;<a name="line.252"></a>
+<span class="sourceLineNo">068</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final Pattern SERVER_COLUMN_PATTERN = Pattern<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      .compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static CompletableFuture&lt;Boolean&gt; tableExists(AsyncTable&lt;?&gt; metaTable,<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      TableName tableName) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    return getTableState(metaTable, tableName).thenApply(Optional::isPresent);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public static CompletableFuture&lt;Optional&lt;TableState&gt;&gt; getTableState(AsyncTable&lt;?&gt; metaTable,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      TableName tableName) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    CompletableFuture&lt;Optional&lt;TableState&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    Get get = new Get(tableName.getName()).addColumn(getTableFamily(), getStateColumn());<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    try {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      get.setTimeRange(0, time);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      metaTable.get(get).whenComplete((result, error) -&gt; {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        if (error != null) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>          future.completeExceptionally(error);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          return;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        try {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>          future.complete(getTableState(result));<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        } catch (IOException e) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>          future.completeExceptionally(e);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      });<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    } catch (IOException ioe) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      future.completeExceptionally(ioe);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    return future;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * Returns the HRegionLocation from meta for the given region<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * @param metaTable<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param regionName region we're looking for<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @return HRegionLocation for the given region<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocation(<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      AsyncTable&lt;?&gt; metaTable, byte[] regionName) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    try {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      RegionInfo parsedRegionInfo = MetaTableAccessor.parseRegionInfoFromRegionName(regionName);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      metaTable.get(<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        new Get(MetaTableAccessor.getMetaKeyForRegion(parsedRegionInfo))<a name="line.113"></a>
+<span class="sourceLineNo">114</span>            .addFamily(HConstants.CATALOG_FAMILY)).whenComplete(<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        (r, err) -&gt; {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          if (err != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            future.completeExceptionally(err);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>            return;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>          }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          future.complete(getRegionLocations(r).map(<a name="line.120"></a>
+<span class="sourceLineNo">121</span>            locations -&gt; locations.getRegionLocation(parsedRegionInfo.getReplicaId())));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        });<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    } catch (IOException parseEx) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      LOG.warn("Failed to parse the passed region name: " + Bytes.toStringBinary(regionName));<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      future.completeExceptionally(parseEx);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    return future;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  /**<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * Returns the HRegionLocation from meta for the given encoded region name<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @param metaTable<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @param encodedRegionName region we're looking for<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * @return HRegionLocation for the given region<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocationWithEncodedName(<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      AsyncTable&lt;?&gt; metaTable, byte[] encodedRegionName) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    metaTable.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY))<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        .whenComplete(<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          (results, err) -&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>            if (err != null) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>              future.completeExceptionally(err);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>              return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            }<a name="line.145"></a>
+<span class="sourceLineNo">146</span>            String encodedRegionNameStr = Bytes.toString(encodedRegionName);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            results<a name="line.147"></a>
+<span class="sourceLineNo">148</span>                .stream()<a name="line.148"></a>
+<span class="sourceLineNo">149</span>                .filter(result -&gt; !result.isEmpty())<a name="line.149"></a>
+<span class="sourceLineNo">150</span>                .filter(result -&gt; MetaTableAccessor.getRegionInfo(result) != null)<a name="line.150"></a>
+<span class="sourceLineNo">151</span>                .forEach(<a name="line.151"></a>
+<span class="sourceLineNo">152</span>                  result -&gt; {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>                    getRegionLocations(result).ifPresent(<a name="line.153"></a>
+<span class="sourceLineNo">154</span>                      locations -&gt; {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>                        for (HRegionLocation location : locations.getRegionLocations()) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                          if (location != null<a name="line.156"></a>
+<span class="sourceLineNo">157</span>                              &amp;&amp; encodedRegionNameStr.equals(location.getRegion()<a name="line.157"></a>
+<span class="sourceLineNo">158</span>                                  .getEncodedName())) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>                            future.complete(Optional.of(location));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>                            return;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>                          }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>                        }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>                      });<a name="line.163"></a>
+<span class="sourceLineNo">164</span>                  });<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            future.complete(Optional.empty());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          });<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return future;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  private static Optional&lt;TableState&gt; getTableState(Result r) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    Cell cell = r.getColumnLatestCell(getTableFamily(), getStateColumn());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    if (cell == null) return Optional.empty();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      return Optional.of(TableState.parseFrom(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        TableName.valueOf(r.getRow()),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        Arrays.copyOfRange(cell.getValueArray(), cell.getValueOffset(), cell.getValueOffset()<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            + cell.getValueLength())));<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    } catch (DeserializationException e) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      throw new IOException("Failed to parse table state from result: " + r, e);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * Used to get all region locations for the specific table.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @param metaTable<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @return the list of region locations. The return value will be wrapped by a<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   *         {@link CompletableFuture}.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public static CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; getTableHRegionLocations(<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, Optional&lt;TableName&gt; tableName) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    getTableRegionsAndLocations(metaTable, tableName, true).whenComplete(<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      (locations, err) -&gt; {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        if (err != null) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          future.completeExceptionally(err);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        } else if (locations == null || locations.isEmpty()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          future.complete(Collections.emptyList());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        } else {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>          List&lt;HRegionLocation&gt; regionLocations = locations.stream()<a name="line.200"></a>
+<span class="sourceLineNo">201</span>              .map(loc -&gt; new HRegionLocation(loc.getFirst(), loc.getSecond()))<a name="line.201"></a>
+<span class="sourceLineNo">202</span>              .collect(Collectors.toList());<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          future.complete(regionLocations);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      });<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    return future;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * Used to get table regions' info and server.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * @param metaTable<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * @param excludeOfflinedSplitParents don't return split parents<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @return the list of regioninfos and server. The return value will be wrapped by a<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   *         {@link CompletableFuture}.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private static CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; getTableRegionsAndLocations(<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, final Optional&lt;TableName&gt; tableName,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      final boolean excludeOfflinedSplitParents) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    if (tableName.filter((t) -&gt; t.equals(TableName.META_TABLE_NAME)).isPresent()) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      future.completeExceptionally(new IOException(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          "This method can't be used to locate meta regions;" + " use MetaTableLocator instead"));<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // Make a version of CollectingVisitor that collects RegionInfo and ServerAddress<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; visitor = new CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      private Optional&lt;RegionLocations&gt; current = null;<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>      @Override<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      public boolean visit(Result r) throws IOException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        current = getRegionLocations(r);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        if (!current.isPresent() || current.get().getRegionLocation().getRegion() == null) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          LOG.warn("No serialized RegionInfo in " + r);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        RegionInfo hri = current.get().getRegionLocation().getRegion();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        if (excludeOfflinedSplitParents &amp;&amp; hri.isSplitParent()) return true;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        // Else call super and add this Result to the collection.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        return super.visit(r);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      void add(Result r) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        if (!current.isPresent()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          return;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        for (HRegionLocation loc : current.get().getRegionLocations()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          if (loc != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            this.results.add(new Pair&lt;RegionInfo, ServerName&gt;(loc.getRegion(), loc<a name="line.250"></a>
+<span class="sourceLineNo">251</span>                .getServerName()));<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          }<a name="line.252"></a>
 <span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        for (HRegionLocation loc : current.get().getRegionLocations()) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          if (loc != null) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            this.results.add(new Pair&lt;RegionInfo, ServerName&gt;(loc.getRegion(), loc<a name="line.256"></a>
-<span class="sourceLineNo">257</span>                .getServerName()));<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    };<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    scanMeta(metaTable, tableName, QueryType.REGION, visitor).whenComplete((v, error) -&gt; {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      if (error != null) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        future.completeExceptionally(error);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        return;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      future.complete(visitor.getResults());<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    });<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return future;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * Performs a scan of META table for given table.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @param metaTable<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * @param tableName table withing we scan<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @param type scanned part of meta<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * @param visitor Visitor invoked against each row<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      Optional&lt;TableName&gt; tableName, QueryType type, final Visitor visitor) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    return scanMeta(metaTable, getTableStartRowForMeta(tableName, type),<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      getTableStopRowForMeta(tableName, type), type, Integer.MAX_VALUE, visitor);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * Performs a scan of META table for given table.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param metaTable<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @param startRow Where to start the scan<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @param stopRow Where to stop the scan<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * @param type scanned part of meta<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @param maxRows maximum rows to return<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @param visitor Visitor invoked against each row<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      Optional&lt;byte[]&gt; startRow, Optional&lt;byte[]&gt; stopRow, QueryType type, int maxRows,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      final Visitor visitor) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    int rowUpperLimit = maxRows &gt; 0 ? maxRows : Integer.MAX_VALUE;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    Scan scan = getMetaScan(metaTable, rowUpperLimit);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (byte[] family : type.getFamilies()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      scan.addFamily(family);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    startRow.ifPresent(scan::withStartRow);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    stopRow.ifPresent(scan::withStopRow);<a name="line.304"></a>
+<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    scanMeta(metaTable, tableName, QueryType.REGION, visitor).whenComplete((v, error) -&gt; {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (error != null) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        future.completeExceptionally(error);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        return;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      future.complete(visitor.getResults());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    });<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return future;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * Performs a scan of META table for given table.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @param metaTable<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @param tableName table withing we scan<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * @param type scanned part of meta<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   * @param visitor Visitor invoked against each row<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      Optional&lt;TableName&gt; tableName, QueryType type, final Visitor visitor) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    return scanMeta(metaTable, getTableStartRowForMeta(tableName, type),<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      getTableStopRowForMeta(tableName, type), type, Integer.MAX_VALUE, visitor);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * Performs a scan of META table for given table.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param metaTable<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param startRow Where to start the scan<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param stopRow Where to stop the scan<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * @param type scanned part of meta<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @param maxRows maximum rows to return<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @param visitor Visitor invoked against each row<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      Optional&lt;byte[]&gt; startRow, Optional&lt;byte[]&gt; stopRow, QueryType type, int maxRows,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      final Visitor visitor) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    int rowUpperLimit = maxRows &gt; 0 ? maxRows : Integer.MAX_VALUE;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    Scan scan = getMetaScan(metaTable, rowUpperLimit);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    for (byte[] family : type.getFamilies()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      scan.addFamily(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    startRow.ifPresent(scan::withStartRow);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    stopRow.ifPresent(scan::withStopRow);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (LOG.isDebugEnabled()) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LOG.debug("Scanning META" + " starting at row=" + Bytes.toStringBinary(scan.getStartRow())<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          + " stopping at row=" + Bytes.toStringBinary(scan.getStopRow()) + " for max="<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + rowUpperLimit + " with caching=" + scan.getCaching());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    if (LOG.isDebugEnabled()) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      LOG.debug("Scanning META" + " starting at row=" + Bytes.toStringBinary(scan.getStartRow())<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          + " stopping at row=" + Bytes.toStringBinary(scan.getStopRow()) + " for max="<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          + rowUpperLimit + " with caching=" + scan.getCaching());<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future));<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return future;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">306</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return future;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private static final class MetaTableScanResultConsumer implements AdvancedScanResultConsumer {<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    private int currentRowCount;<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final int rowUpperLimit;<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private static final class MetaTableScanResultConsumer implements AdvancedScanResultConsumer {<a name="line.317"></a>
+<span class="sourceLineNo">317</span>    private final Visitor visitor;<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    private int currentRowCount;<a name="line.319"></a>
+<span class="sourceLineNo">319</span>    private final CompletableFuture&lt;Void&gt; future;<a name="line.319"></a>
 <span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private final int rowUpperLimit;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private final Visitor visitor;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    private final CompletableFuture&lt;Void&gt; future;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    MetaTableScanResultConsumer(int rowUpperLimit, Visitor visitor,<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        CompletableFuture&lt;Void&gt; future) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      this.rowUpperLimit = rowUpperLimit;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      this.visitor = visitor;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      this.future = future;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      this.currentRowCount = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    @Override<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    public void onError(Throwable error) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      future.completeExceptionally(error);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP_NONNULL_PARAM_VIOLATION",<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      justification = "https://github.com/findbugsproject/findbugs/issues/79")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public void onComplete() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      future.complete(null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    @Override<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    public void onNext(Result[] results, ScanController controller) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      boolean terminateScan = false;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      for (Result result : results) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        try {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          if (!visitor.visit(result)) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>            terminateScan = true;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>            break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        } catch (Exception e) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>          future.completeExceptionally(e);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          terminateScan = true;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          break;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        if (++currentRowCount &gt;= rowUpperLimit) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          terminateScan = true;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          break;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      if (terminateScan) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        controller.terminate();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private static Scan getMetaScan(AsyncTable&lt;?&gt; metaTable, int rowUpperLimit) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    Scan scan = new Scan();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int scannerCaching = metaTable.getConfiguration().getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (metaTable.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    if (rowUpperLimit &lt;= scannerCaching) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      scan.setLimit(rowUpperLimit);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    int rows = Math.min(rowUpperLimit, scannerCaching);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    scan.setCaching(rows);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    return scan;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * Returns an HRegionLocationList extracted from the result.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return an HRegionLocationList containing all locations for the region range or null if we<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   *         can't deserialize the result.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  private static Optional&lt;RegionLocations&gt; getRegionLocations(final Result r) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    if (r == null) return Optional.empty();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    Optional&lt;RegionInfo&gt; regionInfo = getHRegionInfo(r, getRegionInfoColumn());<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (!regionInfo.isPresent()) return Optional.empty();<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;HRegionLocation&gt;(1);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    NavigableMap&lt;byte[], NavigableMap&lt;byte[], byte[]&gt;&gt; familyMap = r.getNoVersionMap();<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>    locations.add(getRegionLocation(r, regionInfo.get(), 0));<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>    NavigableMap&lt;byte[], byte[]&gt; infoMap = familyMap.get(getCatalogFamily());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    if (infoMap == null) return Optional.of(new RegionLocations(locations));<a name="line.404"></a>
+<span class="sourceLineNo">321</span>    MetaTableScanResultConsumer(int rowUpperLimit, Visitor visitor,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        CompletableFuture&lt;Void&gt; future) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      this.rowUpperLimit = rowUpperLimit;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.visitor = visitor;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.future = future;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      this.currentRowCount = 0;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    public void onError(Throwable error) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      future.completeExceptionally(error);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP_NONNULL_PARAM_VIOLATION",<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      justification = "https://github.com/findbugsproject/findbugs/issues/79")<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public void onComplete() {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      future.complete(null);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>    @Override<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    public void onNext(Result[] results, ScanController controller) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      boolean terminateScan = false;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      for (Result result : results) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        try {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          if (!visitor.visit(result)) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            terminateScan = true;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            break;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        } catch (Exception e) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          future.completeExceptionally(e);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          terminateScan = true;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          break;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        if (++currentRowCount &gt;= rowUpperLimit) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          terminateScan = true;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      if (terminateScan) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        controller.terminate();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private static Scan getMetaScan(AsyncTable&lt;?&gt; metaTable, int rowUpperLimit) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    Scan scan = new Scan();<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    int scannerCaching = metaTable.getConfiguration().getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (metaTable.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    if (rowUpperLimit &lt;= scannerCaching) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      scan.setLimit(rowUpperLimit);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    int rows = Math.min(rowUpperLimit, scannerCaching);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    scan.setCaching(rows);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    return scan;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Returns an HRegionLocationList extracted from the result.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * @return an HRegionLocationList containing all locations for the region range or null if we<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   *         can't deserialize the result.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private static Optional&lt;RegionLocations&gt; getRegionLocations(final Result r) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (r == null) return Optional.empty();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    Optional&lt;RegionInfo&gt; regionInfo = getHRegionInfo(r, getRegionInfoColumn());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    if (!regionInfo.isPresent()) return Optional.empty();<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;HRegionLocation&gt;(1);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    NavigableMap&lt;byte[], NavigableMap&lt;byte[], byte[]&gt;&gt; familyMap = r.getNoVersionMap();<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    locations.add(getRegionLocation(r, regionInfo.get(), 0));<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>    NavigableMap&lt;byte[], byte[]&gt; infoMap = familyMap.get(getCatalogFamily());<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    if (infoMap == null) return Optional.of(new RegionLocations(locations));<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    // iterate until all serverName columns are seen<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int replicaId = 0;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    SortedMap&lt;byte[], byte[]&gt; serverMap = null;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    serverMap = infoMap.tailMap(serverColumn, false);<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // iterate until all serverName columns are seen<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    int replicaId = 0;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    SortedMap&lt;byte[], byte[]&gt; serverMap = null;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    serverMap = infoMap.tailMap(serverColumn, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    if (serverMap.isEmpty()) return Optional.of(new RegionLocations(locations));<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    for (Map.Entry&lt;byte[], byte[]&gt; entry : serverMap.entrySet()) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      replicaId = parseReplicaIdFromServerColumn(entry.getKey());<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      if (replicaId &lt; 0) {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      HRegionLocation location = getRegionLocation(r, regionInfo.get(), replicaId);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // In case the region replica is newly created, it's location might be null. We usually do not<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      // have HRL's in RegionLocations object with null ServerName. They are handled as null HRLs.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      if (location == null || location.getServerName() == null) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        locations.add(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } else {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        locations.add(location);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return Optional.of(new RegionLocations(locations));<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Returns the HRegionLocation parsed from the given meta row Result<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * for the given regionInfo and replicaId. The regionInfo can be the default region info<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * for the replica.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * @param r the meta row result<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * @param regionInfo RegionInfo for default replica<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param replicaId the replicaId for the HRegionLocation<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @return HRegionLocation parsed from the given meta row Result for the given replicaId<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private static HRegionLocation getRegionLocation(final Result r, final RegionInfo regionInfo,<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      final int replicaId) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    Optional&lt;ServerName&gt; serverName = getServerName(r, replicaId);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    long seqNum = getSeqNumDuringOpen(r, replicaId);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    RegionInfo replicaInfo = RegionReplicaUtil.getRegionInfoForReplica(regionInfo, replicaId);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return new HRegionLocation(replicaInfo, serverName.orElse(null), seqNum);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * Returns a {@link ServerName} from catalog table {@link Result}.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param r Result to pull from<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @return A ServerName instance.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private static Optional&lt;ServerName&gt; getServerName(final Result r, final int replicaId) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), serverColumn);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    String hostAndPort = Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      cell.getValueLength());<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    byte[] startcodeColumn = getStartCodeColumn(replicaId);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    cell = r.getColumnLatestCell(getCatalogFamily(), startcodeColumn);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    try {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      return Optional.of(ServerName.valueOf(hostAndPort,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    } catch (IllegalArgumentException e) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      LOG.error("Ignoring invalid region for server " + hostAndPort + "; cell=" + cell, e);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      return Optional.empty();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * The latest seqnum that the server writing to meta observed when opening the region.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * E.g. the seqNum when the result of {@link #getServerName(Result, int)} was written.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * @param r Result to pull the seqNum from<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @return SeqNum, or HConstants.NO_SEQNUM if there's no value written.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private static long getSeqNumDuringOpen(final Result r, final int replicaId) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), getSeqNumColumn(replicaId));<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (cell == null || cell.getValueLength() == 0) return HConstants.NO_SEQNUM;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    return Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  /**<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param tableName table we're working with<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @return start row for scanning META according to query type<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   */<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  private static Optional&lt;byte[]&gt; getTableStartRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      QueryType type) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return tableName.map((table) -&gt; {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      switch (type) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        case REGION:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        case REPLICATION:<a name="line.493"></a>
-<span class="sourceLineNo">494</span>          byte[] startRow = new byte[table.getName().length + 2];<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          System.arraycopy(table.getName(), 0, startRow, 0, table.getName().length);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.496"></a>
-<span class="sourceLineNo">497</span>          startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          return startRow;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        case ALL:<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        case TABLE:<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        default:<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          return table.getName();<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    });<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @param tableName table we're working with<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * @return stop row for scanning META according to query type<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   */<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private static Optional&lt;byte[]&gt; getTableStopRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      QueryType type) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    return tableName.map((table) -&gt; {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      final byte[] stopRow;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      switch (type) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        case REGION:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        case REPLICATION:<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          stopRow = new byte[table.getName().length + 3];<a name="line.518"></a>
-<span class="sourceLineNo">519</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>          stopRow[stopRow.length - 3] = ' ';<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          break;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        case ALL:<a name="line.524"></a>
-<span class="sourceLineNo">525</span>        case TABLE:<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        default:<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          stopRow = new byte[table.getName().length + 1];<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          stopRow[stopRow.length - 1] = ' ';<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          break;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      return stopRow;<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><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * Returns the RegionInfo object from the column {@link HConstants#CATALOG_FAMILY} and<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * &lt;code&gt;qualifier&lt;/code&gt; of the catalog table result.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param r a Result object from the catalog table scan<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param qualifier Column family qualifier<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @return An RegionInfo instance.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   */<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  private static Optional&lt;RegionInfo&gt; getHRegionInfo(final Result r, byte[] qualifier) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), qualifier);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (cell == null) return Optional.empty();<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return Optional.ofNullable(RegionInfo.parseFromOrNull(cell.getValueArray(),<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      cell.getValueOffset(), cell.getValueLength()));<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>  /**<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * Returns the column family used for meta columns.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @return HConstants.CATALOG_FAMILY.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  private static byte[] getCatalogFamily() {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    return HConstants.CATALOG_FAMILY;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>  /**<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * Returns the column family used for table columns.<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @return HConstants.TABLE_FAMILY.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   */<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  private static byte[] getTableFamily() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return HConstants.TABLE_FAMILY;<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>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Returns the column qualifier for serialized region info<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * @return HConstants.REGIONINFO_QUALIFIER<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  private static byte[] getRegionInfoColumn() {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return HConstants.REGIONINFO_QUALIFIER;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  /**<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Returns the column qualifier for serialized table state<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @return HConstants.TABLE_STATE_QUALIFIER<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   */<a name="line.577"></a>
-<span class="sourceLineNo">578</span>  private static byte[] getStateColumn() {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    return HConstants.TABLE_STATE_QUALIFIER;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
-<span class="sourceLineNo">581</span><a name="line.581"></a>
-<span class="sourceLineNo">582</span>  /**<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Returns the column qualifier for server column for replicaId<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param replicaId the replicaId of the region<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @return a byte[] for server column qualifier<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private static byte[] getServerColumn(int replicaId) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    return replicaId == 0<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      ? HConstants.SERVER_QUALIFIER<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      : Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Returns the column qualifier for server start code column for replicaId<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param replicaId the replicaId of the region<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @return a byte[] for server start code column qualifier<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
-<span class="sourceLineNo">599</span>  private static byte[] getStartCodeColumn(int replicaId) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    return replicaId == 0<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      ? HConstants.STARTCODE_QUALIFIER<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      : Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
-<span class="sourceLineNo">605</span><a name="line.605"></a>
-<span class="sourceLineNo">606</span>  /**<a name="line.606"></a>
-<span class="sourceLineNo">607</span>   * Returns the column qualifier for seqNum column for replicaId<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   * @param replicaId the replicaId of the region<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * @return a byte[] for seqNum column qualifier<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   */<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  private static byte[] getSeqNumColumn(int replicaId) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return replicaId == 0<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      ? HConstants.SEQNUM_QUALIFIER<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      : Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Parses the replicaId from the server column qualifier. See top of the class javadoc<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * for the actual meta layout<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param serverColumn the column qualifier<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @return an int for the replicaId<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   */<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  private static int parseReplicaIdFromServerColumn(byte[] serverColumn) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    String serverStr = Bytes.toString(serverColumn);<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>    Matcher matcher = SERVER_COLUMN_PATTERN.matcher(serverStr);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    if (matcher.matches() &amp;&amp; matcher.groupCount() &gt; 0) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      String group = matcher.group(1);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      if (group != null &amp;&amp; group.length() &gt; 0) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        return Integer.parseInt(group.substring(1), 16);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        return 0;<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>    return -1;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>}<a name="line.638"></a>
+<span class="sourceLineNo">406</span>    if (serverMap.isEmpty()) return Optional.of(new RegionLocations(locations));<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>    for (Map.Entry&lt;byte[], byte[]&gt; entry : serverMap.entrySet()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      replicaId = parseReplicaIdFromServerColumn(entry.getKey());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      if (replicaId &lt; 0) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        break;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      HRegionLocation location = getRegionLocation(r, regionInfo.get(), replicaId);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      // In case the region replica is newly created, it's location might be null. We usually do not<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // have HRL's in RegionLocations object with null ServerName. They are handled as null HRLs.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      if (location == null || location.getServerName() == null) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        locations.add(null);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } else {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        locations.add(location);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>    return Optional.of(new RegionLocations(locations));<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * Returns the HRegionLocation parsed from the given meta row Result<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * for the given regionInfo and replicaId. The regionInfo can be the default region info<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * for the replica.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @param r the meta row result<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * @param regionInfo RegionInfo for default replica<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * @param replicaId the replicaId for the HRegionLocation<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @return HRegionLocation parsed from the given meta row Result for the given replicaId<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private static HRegionLocation getRegionLocation(final Result r, final RegionInfo regionInfo,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      final int replicaId) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    Optional&lt;ServerName&gt; serverName = getServerName(r, replicaId);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    long seqNum = getSeqNumDuringOpen(r, replicaId);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    RegionInfo replicaInfo = RegionReplicaUtil.getRegionInfoForReplica(regionInfo, replicaId);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return new HRegionLocation(replicaInfo, serverName.orElse(null), seqNum);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Returns a {@link ServerName} from catalog table {@link Result}.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   * @param r Result to pull from<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return A ServerName instance.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  private static Optional&lt;ServerName&gt; getServerName(final Result r, final int replicaId) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), serverColumn);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    String hostAndPort = Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      cell.getValueLength());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    byte[] startcodeColumn = getStartCodeColumn(replicaId);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    cell = r.getColumnLatestCell(getCatalogFamily(), startcodeColumn);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    try {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      return Optional.of(ServerName.valueOf(hostAndPort,<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())));<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    } catch (IllegalArgumentException e) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      LOG.error("Ignoring invalid region for server " + hostAndPort + "; cell=" + cell, e);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      return Optional.empty();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
+<span class="sourceLineNo">464</span>  }<a name="line.464"></a>
+<span class="sourceLineNo">465</span><a name="line.465"></a>
+<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * The latest seqnum that the server writing to meta observed when opening the region.<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * E.g. the seqNum when the result of {@link #getServerName(Result, int)} was written.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @param r Result to pull the seqNum from<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @return SeqNum, or HConstants.NO_SEQNUM if there's no value written.<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  private static long getSeqNumDuringOpen(final Result r, final int replicaId) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), getSeqNumColumn(replicaId));<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    if (cell == null || cell.getValueLength() == 0) return HConstants.NO_SEQNUM;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>  /**<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param tableName table we're working with<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @return start row for scanning META according to query type<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private static Optional&lt;byte[]&gt; getTableStartRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      QueryType type) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    return tableName.map((table) -&gt; {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      switch (type) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        case REGION:<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        case REPLICATION:<a name="line.487"></a>
+<span class="sourceLineNo">488</span>          byte[] startRow = new byte[table.getName().length + 2];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>          System.arraycopy(table.getName(), 0, startRow, 0, table.getName().length);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          return startRow;<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        case ALL:<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        case TABLE:<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        default:<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          return table.getName();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    });<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>  /**<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @param tableName table we're working with<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * @return stop row for scanning META according to query type<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  private static Optional&lt;byte[]&gt; getTableStopRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      QueryType type) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    return tableName.map((table) -&gt; {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      final byte[] stopRow;<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      switch (type) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        case REGION:<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        case REPLICATION:<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          stopRow = new byte[table.getName().length + 3];<a name="line.512"></a>
+<span class="sourceLineNo">513</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>          stopRow[stopRow.length - 3] = ' ';<a name="line.514"></a>
+<span class="sourceLineNo">515</span>          stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.515"></a>
+<span class="sourceLineNo">516</span>          stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>          break;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>        case ALL:<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        case TABLE:<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        default:<a name="line.520"></a>
+<span class="sourceLineNo">521</span>          stopRow = new byte[table.getName().length + 1];<a name="line.521"></a>
+<span class="sourceLineNo">522</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          stopRow[stopRow.length - 1] = ' ';<a name="line.523"></a>
+<span class="sourceLineNo">524</span>          break;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return stopRow;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    });<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>  /**<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * Returns the RegionInfo object from the column {@link HConstants#CATALOG_FAMILY} and<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * &lt;code&gt;qualifier&lt;/code&gt; of the catalog table result.<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param r a Result object from the catalog table scan<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param qualifier Column family qualifier<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @return An RegionInfo instance.<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  private static Optional&lt;RegionInfo&gt; getHRegionInfo(final Result r, byte[] qualifier) {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), qualifier);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    if (cell == null) return Optional.empty();<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return Optional.ofNullable(RegionInfo.parseFromOrNull(cell.getValueArray(),<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      cell.getValueOffset(), cell.getValueLength()));<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  /**<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * Returns the column family used for meta columns.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * @return HConstants.CATALOG_FAMILY.<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   */<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static byte[] getCatalogFamily() {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    return HConstants.CATALOG_FAMILY;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  }<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>   * Returns the column family used for table columns.<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @return HConstants.TABLE_FAMILY.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   */<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  private static byte[] getTableFamily() {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    return HConstants.TABLE_FAMILY;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  }<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>   * Returns the column qualifier for serialized region info<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @return HConstants.REGIONINFO_QUALIFIER<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  private static byte[] getRegionInfoColumn() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    return HConstants.REGIONINFO_QUALIFIER;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  }<a name="line.566"></a>
+<span class="sourceLineNo">567</span><a name="line.567"></a>
+<span class="sourceLineNo">568</span>  /**<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   * Returns the column qualifier for serialized table state<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * @return HConstants.TABLE_STATE_QUALIFIER<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private static byte[] getStateColumn() {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    return HConstants.TABLE_STATE_QUALIFIER;<a name="line.573"></a>
+<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   * Returns the column qualifier for server column for replicaId<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * @param replicaId the replicaId of the region<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * @return a byte[] for server column qualifier<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   */<a name="line.580"></a>
+<span class="sourceLineNo">581</span>  private static byte[] getServerColumn(int replicaId) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    return replicaId == 0<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      ? HConstants.SERVER_QUALIFIER<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      : Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  /**<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * Returns the column qualifier for server start code column for replicaId<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * @param replicaId the replicaId of the region<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   * @return a byte[] for server start code column qualifier<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  private static byte[] getStartCodeColumn(int replicaId) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    return replicaId == 0<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      ? HConstants.STARTCODE_QUALIFIER<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      : Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.597"></a>
+<span class="sourceLineNo">598</span>  }<a name="line.598"></a>
+<span class="sourceLineNo">599</span><a name="line.599"></a>
+<span class="sourceLineNo">600</span>  /**<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * Returns the column qualifier for seqNum column for replicaId<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param replicaId the replicaId of the region<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @return a byte[] for seqNum column qualifier<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   */<a name="line.604"></a>
+<span class="sourceLineNo">605</span>  private static byte[] getSeqNumColumn(int replicaId) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    return replicaId == 0<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      ? HConstants.SEQNUM_QUALIFIER<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      : Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Parses the replicaId from the server column qualifier. See top of the class javadoc<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * for the actual meta layout<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param serverColumn the column qualifier<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @return an int for the replicaId<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   */<a name="line.617"></a>
+<span class="sourceLineNo">618</span>  private static int parseReplicaIdFromServerColumn(byte[] serverColumn) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    String serverStr = Bytes.toString(serverColumn);<a name="line.619"></a>
+<span class="sourceLineNo">620</span><a name="line.620"></a>
+<span class="sourceLineNo">621</span>    Matcher matcher = SERVER_COLUMN_PATTERN.matcher(serverStr);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    if (matcher.matches() &amp;&amp; matcher.groupCount() &gt; 0) {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      String group = matcher.group(1);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      if (group != null &amp;&amp; group.length() &gt; 0) {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>        return Integer.parseInt(group.substring(1), 16);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      } else {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>        return 0;<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      }<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    }<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return -1;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>}<a name="line.632"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html b/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html
index 8dacf5e..c68611a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/AsyncMetaTableAccessor.html
@@ -25,625 +25,619 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.TableName.META_TABLE_NAME;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Arrays;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.NavigableMap;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Optional;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.SortedMap;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.CompletableFuture;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.regex.Matcher;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.regex.Pattern;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.stream.Collectors;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.MetaTableAccessor.CollectingVisitor;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.MetaTableAccessor.QueryType;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.MetaTableAccessor.Visitor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.AdvancedScanResultConsumer;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.AsyncTable;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Get;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan.ReadType;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * The asynchronous meta table accessor. Used to read/write region and assignment information store<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * @since 2.0.0<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@InterfaceAudience.Private<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public class AsyncMetaTableAccessor {<a name="line.63"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.Map;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.NavigableMap;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Optional;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.SortedMap;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CompletableFuture;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.regex.Matcher;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.regex.Pattern;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.stream.Collectors;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaTableAccessor.CollectingVisitor;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.MetaTableAccessor.QueryType;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.MetaTableAccessor.Visitor;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.AdvancedScanResultConsumer;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.AsyncTable;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Get;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Result;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Scan.ReadType;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>/**<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * The asynchronous meta table accessor. Used to read/write region and assignment information store<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * @since 2.0.0<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@InterfaceAudience.Private<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class AsyncMetaTableAccessor {<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final Logger LOG = LoggerFactory.getLogger(AsyncMetaTableAccessor.class);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(AsyncMetaTableAccessor.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">065</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.66"></a>
 <span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final Pattern SERVER_COLUMN_PATTERN = Pattern<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      .compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public static CompletableFuture&lt;Boolean&gt; tableExists(AsyncTable&lt;?&gt; metaTable,<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      TableName tableName) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    if (tableName.equals(META_TABLE_NAME)) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return CompletableFuture.completedFuture(true);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    return getTableState(metaTable, tableName).thenApply(Optional::isPresent);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public static CompletableFuture&lt;Optional&lt;TableState&gt;&gt; getTableState(AsyncTable&lt;?&gt; metaTable,<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      TableName tableName) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    CompletableFuture&lt;Optional&lt;TableState&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    Get get = new Get(tableName.getName()).addColumn(getTableFamily(), getStateColumn());<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    try {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      get.setTimeRange(0, time);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      metaTable.get(get).whenComplete((result, error) -&gt; {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        if (error != null) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>          future.completeExceptionally(error);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          return;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        try {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>          future.complete(getTableState(result));<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        } catch (IOException e) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          future.completeExceptionally(e);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>        }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      });<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    } catch (IOException ioe) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      future.completeExceptionally(ioe);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    return future;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * Returns the HRegionLocation from meta for the given region<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @param metaTable<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * @param regionName region we're looking for<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @return HRegionLocation for the given region<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocation(<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      AsyncTable&lt;?&gt; metaTable, byte[] regionName) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    try {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      RegionInfo parsedRegionInfo = MetaTableAccessor.parseRegionInfoFromRegionName(regionName);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      metaTable.get(<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        new Get(MetaTableAccessor.getMetaKeyForRegion(parsedRegionInfo))<a name="line.119"></a>
-<span class="sourceLineNo">120</span>            .addFamily(HConstants.CATALOG_FAMILY)).whenComplete(<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        (r, err) -&gt; {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          if (err != null) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            future.completeExceptionally(err);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>            return;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>          future.complete(getRegionLocations(r).map(<a name="line.126"></a>
-<span class="sourceLineNo">127</span>            locations -&gt; locations.getRegionLocation(parsedRegionInfo.getReplicaId())));<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        });<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } catch (IOException parseEx) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      LOG.warn("Failed to parse the passed region name: " + Bytes.toStringBinary(regionName));<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      future.completeExceptionally(parseEx);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    return future;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * Returns the HRegionLocation from meta for the given encoded region name<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @param metaTable<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param encodedRegionName region we're looking for<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @return HRegionLocation for the given region<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocationWithEncodedName(<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      AsyncTable&lt;?&gt; metaTable, byte[] encodedRegionName) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    metaTable.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY))<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        .whenComplete(<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          (results, err) -&gt; {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>            if (err != null) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>              future.completeExceptionally(err);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              return;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>            }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>            String encodedRegionNameStr = Bytes.toString(encodedRegionName);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>            results<a name="line.153"></a>
-<span class="sourceLineNo">154</span>                .stream()<a name="line.154"></a>
-<span class="sourceLineNo">155</span>                .filter(result -&gt; !result.isEmpty())<a name="line.155"></a>
-<span class="sourceLineNo">156</span>                .filter(result -&gt; MetaTableAccessor.getRegionInfo(result) != null)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>                .forEach(<a name="line.157"></a>
-<span class="sourceLineNo">158</span>                  result -&gt; {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>                    getRegionLocations(result).ifPresent(<a name="line.159"></a>
-<span class="sourceLineNo">160</span>                      locations -&gt; {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>                        for (HRegionLocation location : locations.getRegionLocations()) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>                          if (location != null<a name="line.162"></a>
-<span class="sourceLineNo">163</span>                              &amp;&amp; encodedRegionNameStr.equals(location.getRegion()<a name="line.163"></a>
-<span class="sourceLineNo">164</span>                                  .getEncodedName())) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>                            future.complete(Optional.of(location));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>                            return;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>                          }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>                        }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>                      });<a name="line.169"></a>
-<span class="sourceLineNo">170</span>                  });<a name="line.170"></a>
-<span class="sourceLineNo">171</span>            future.complete(Optional.empty());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          });<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return future;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private static Optional&lt;TableState&gt; getTableState(Result r) throws IOException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    Cell cell = r.getColumnLatestCell(getTableFamily(), getStateColumn());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (cell == null) return Optional.empty();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return Optional.of(TableState.parseFrom(<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        TableName.valueOf(r.getRow()),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        Arrays.copyOfRange(cell.getValueArray(), cell.getValueOffset(), cell.getValueOffset()<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            + cell.getValueLength())));<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    } catch (DeserializationException e) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      throw new IOException("Failed to parse table state from result: " + r, e);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * Used to get all region locations for the specific table.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param metaTable<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @return the list of region locations. The return value will be wrapped by a<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   *         {@link CompletableFuture}.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public static CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; getTableHRegionLocations(<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, Optional&lt;TableName&gt; tableName) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    getTableRegionsAndLocations(metaTable, tableName, true).whenComplete(<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      (locations, err) -&gt; {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        if (err != null) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          future.completeExceptionally(err);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        } else if (locations == null || locations.isEmpty()) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          future.complete(Collections.emptyList());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        } else {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          List&lt;HRegionLocation&gt; regionLocations = locations.stream()<a name="line.206"></a>
-<span class="sourceLineNo">207</span>              .map(loc -&gt; new HRegionLocation(loc.getFirst(), loc.getSecond()))<a name="line.207"></a>
-<span class="sourceLineNo">208</span>              .collect(Collectors.toList());<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          future.complete(regionLocations);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      });<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return future;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * Used to get table regions' info and server.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param metaTable<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param excludeOfflinedSplitParents don't return split parents<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @return the list of regioninfos and server. The return value will be wrapped by a<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   *         {@link CompletableFuture}.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private static CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; getTableRegionsAndLocations(<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, final Optional&lt;TableName&gt; tableName,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      final boolean excludeOfflinedSplitParents) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (tableName.filter((t) -&gt; t.equals(TableName.META_TABLE_NAME)).isPresent()) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      future.completeExceptionally(new IOException(<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          "This method can't be used to locate meta regions;" + " use MetaTableLocator instead"));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // Make a version of CollectingVisitor that collects RegionInfo and ServerAddress<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; visitor = new CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;() {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      private Optional&lt;RegionLocations&gt; current = null;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public boolean visit(Result r) throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        current = getRegionLocations(r);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        if (!current.isPresent() || current.get().getRegionLocation().getRegion() == null) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          LOG.warn("No serialized RegionInfo in " + r);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          return true;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        RegionInfo hri = current.get().getRegionLocation().getRegion();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (excludeOfflinedSplitParents &amp;&amp; hri.isSplitParent()) return true;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        // Else call super and add this Result to the collection.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        return super.visit(r);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>      @Override<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      void add(Result r) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        if (!current.isPresent()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          return;<a name="line.252"></a>
+<span class="sourceLineNo">068</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final Pattern SERVER_COLUMN_PATTERN = Pattern<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      .compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static CompletableFuture&lt;Boolean&gt; tableExists(AsyncTable&lt;?&gt; metaTable,<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      TableName tableName) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    return getTableState(metaTable, tableName).thenApply(Optional::isPresent);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public static CompletableFuture&lt;Optional&lt;TableState&gt;&gt; getTableState(AsyncTable&lt;?&gt; metaTable,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      TableName tableName) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    CompletableFuture&lt;Optional&lt;TableState&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    Get get = new Get(tableName.getName()).addColumn(getTableFamily(), getStateColumn());<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    try {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      get.setTimeRange(0, time);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      metaTable.get(get).whenComplete((result, error) -&gt; {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        if (error != null) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>          future.completeExceptionally(error);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          return;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        try {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>          future.complete(getTableState(result));<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        } catch (IOException e) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>          future.completeExceptionally(e);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      });<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    } catch (IOException ioe) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      future.completeExceptionally(ioe);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    return future;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * Returns the HRegionLocation from meta for the given region<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * @param metaTable<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param regionName region we're looking for<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @return HRegionLocation for the given region<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocation(<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      AsyncTable&lt;?&gt; metaTable, byte[] regionName) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    try {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      RegionInfo parsedRegionInfo = MetaTableAccessor.parseRegionInfoFromRegionName(regionName);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      metaTable.get(<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        new Get(MetaTableAccessor.getMetaKeyForRegion(parsedRegionInfo))<a name="line.113"></a>
+<span class="sourceLineNo">114</span>            .addFamily(HConstants.CATALOG_FAMILY)).whenComplete(<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        (r, err) -&gt; {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          if (err != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            future.completeExceptionally(err);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>            return;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>          }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          future.complete(getRegionLocations(r).map(<a name="line.120"></a>
+<span class="sourceLineNo">121</span>            locations -&gt; locations.getRegionLocation(parsedRegionInfo.getReplicaId())));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        });<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    } catch (IOException parseEx) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      LOG.warn("Failed to parse the passed region name: " + Bytes.toStringBinary(regionName));<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      future.completeExceptionally(parseEx);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    return future;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  /**<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * Returns the HRegionLocation from meta for the given encoded region name<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @param metaTable<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @param encodedRegionName region we're looking for<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * @return HRegionLocation for the given region<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public static CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; getRegionLocationWithEncodedName(<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      AsyncTable&lt;?&gt; metaTable, byte[] encodedRegionName) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    metaTable.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY))<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        .whenComplete(<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          (results, err) -&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>            if (err != null) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>              future.completeExceptionally(err);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>              return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            }<a name="line.145"></a>
+<span class="sourceLineNo">146</span>            String encodedRegionNameStr = Bytes.toString(encodedRegionName);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            results<a name="line.147"></a>
+<span class="sourceLineNo">148</span>                .stream()<a name="line.148"></a>
+<span class="sourceLineNo">149</span>                .filter(result -&gt; !result.isEmpty())<a name="line.149"></a>
+<span class="sourceLineNo">150</span>                .filter(result -&gt; MetaTableAccessor.getRegionInfo(result) != null)<a name="line.150"></a>
+<span class="sourceLineNo">151</span>                .forEach(<a name="line.151"></a>
+<span class="sourceLineNo">152</span>                  result -&gt; {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>                    getRegionLocations(result).ifPresent(<a name="line.153"></a>
+<span class="sourceLineNo">154</span>                      locations -&gt; {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>                        for (HRegionLocation location : locations.getRegionLocations()) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                          if (location != null<a name="line.156"></a>
+<span class="sourceLineNo">157</span>                              &amp;&amp; encodedRegionNameStr.equals(location.getRegion()<a name="line.157"></a>
+<span class="sourceLineNo">158</span>                                  .getEncodedName())) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>                            future.complete(Optional.of(location));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>                            return;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>                          }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>                        }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>                      });<a name="line.163"></a>
+<span class="sourceLineNo">164</span>                  });<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            future.complete(Optional.empty());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          });<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return future;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  private static Optional&lt;TableState&gt; getTableState(Result r) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    Cell cell = r.getColumnLatestCell(getTableFamily(), getStateColumn());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    if (cell == null) return Optional.empty();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      return Optional.of(TableState.parseFrom(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        TableName.valueOf(r.getRow()),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        Arrays.copyOfRange(cell.getValueArray(), cell.getValueOffset(), cell.getValueOffset()<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            + cell.getValueLength())));<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    } catch (DeserializationException e) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      throw new IOException("Failed to parse table state from result: " + r, e);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * Used to get all region locations for the specific table.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @param metaTable<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @return the list of region locations. The return value will be wrapped by a<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   *         {@link CompletableFuture}.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public static CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; getTableHRegionLocations(<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, Optional&lt;TableName&gt; tableName) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    getTableRegionsAndLocations(metaTable, tableName, true).whenComplete(<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      (locations, err) -&gt; {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        if (err != null) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          future.completeExceptionally(err);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        } else if (locations == null || locations.isEmpty()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          future.complete(Collections.emptyList());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        } else {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>          List&lt;HRegionLocation&gt; regionLocations = locations.stream()<a name="line.200"></a>
+<span class="sourceLineNo">201</span>              .map(loc -&gt; new HRegionLocation(loc.getFirst(), loc.getSecond()))<a name="line.201"></a>
+<span class="sourceLineNo">202</span>              .collect(Collectors.toList());<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          future.complete(regionLocations);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      });<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    return future;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * Used to get table regions' info and server.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * @param metaTable<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @param tableName table we're looking for, can be null for getting all regions<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * @param excludeOfflinedSplitParents don't return split parents<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @return the list of regioninfos and server. The return value will be wrapped by a<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   *         {@link CompletableFuture}.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private static CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; getTableRegionsAndLocations(<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable, final Optional&lt;TableName&gt; tableName,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      final boolean excludeOfflinedSplitParents) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    CompletableFuture&lt;List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    if (tableName.filter((t) -&gt; t.equals(TableName.META_TABLE_NAME)).isPresent()) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      future.completeExceptionally(new IOException(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          "This method can't be used to locate meta regions;" + " use MetaTableLocator instead"));<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // Make a version of CollectingVisitor that collects RegionInfo and ServerAddress<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; visitor = new CollectingVisitor&lt;Pair&lt;RegionInfo, ServerName&gt;&gt;() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      private Optional&lt;RegionLocations&gt; current = null;<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>      @Override<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      public boolean visit(Result r) throws IOException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        current = getRegionLocations(r);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        if (!current.isPresent() || current.get().getRegionLocation().getRegion() == null) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          LOG.warn("No serialized RegionInfo in " + r);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        RegionInfo hri = current.get().getRegionLocation().getRegion();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        if (excludeOfflinedSplitParents &amp;&amp; hri.isSplitParent()) return true;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        // Else call super and add this Result to the collection.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        return super.visit(r);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      void add(Result r) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        if (!current.isPresent()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          return;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        for (HRegionLocation loc : current.get().getRegionLocations()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          if (loc != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            this.results.add(new Pair&lt;RegionInfo, ServerName&gt;(loc.getRegion(), loc<a name="line.250"></a>
+<span class="sourceLineNo">251</span>                .getServerName()));<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          }<a name="line.252"></a>
 <span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        for (HRegionLocation loc : current.get().getRegionLocations()) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          if (loc != null) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            this.results.add(new Pair&lt;RegionInfo, ServerName&gt;(loc.getRegion(), loc<a name="line.256"></a>
-<span class="sourceLineNo">257</span>                .getServerName()));<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    };<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    scanMeta(metaTable, tableName, QueryType.REGION, visitor).whenComplete((v, error) -&gt; {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      if (error != null) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        future.completeExceptionally(error);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        return;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      future.complete(visitor.getResults());<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    });<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return future;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * Performs a scan of META table for given table.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @param metaTable<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * @param tableName table withing we scan<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @param type scanned part of meta<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * @param visitor Visitor invoked against each row<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      Optional&lt;TableName&gt; tableName, QueryType type, final Visitor visitor) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    return scanMeta(metaTable, getTableStartRowForMeta(tableName, type),<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      getTableStopRowForMeta(tableName, type), type, Integer.MAX_VALUE, visitor);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  /**<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * Performs a scan of META table for given table.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param metaTable<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @param startRow Where to start the scan<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @param stopRow Where to stop the scan<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * @param type scanned part of meta<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @param maxRows maximum rows to return<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @param visitor Visitor invoked against each row<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      Optional&lt;byte[]&gt; startRow, Optional&lt;byte[]&gt; stopRow, QueryType type, int maxRows,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      final Visitor visitor) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    int rowUpperLimit = maxRows &gt; 0 ? maxRows : Integer.MAX_VALUE;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    Scan scan = getMetaScan(metaTable, rowUpperLimit);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (byte[] family : type.getFamilies()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      scan.addFamily(family);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    startRow.ifPresent(scan::withStartRow);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    stopRow.ifPresent(scan::withStopRow);<a name="line.304"></a>
+<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    scanMeta(metaTable, tableName, QueryType.REGION, visitor).whenComplete((v, error) -&gt; {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (error != null) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        future.completeExceptionally(error);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        return;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      future.complete(visitor.getResults());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    });<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return future;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * Performs a scan of META table for given table.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @param metaTable<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @param tableName table withing we scan<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * @param type scanned part of meta<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   * @param visitor Visitor invoked against each row<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      Optional&lt;TableName&gt; tableName, QueryType type, final Visitor visitor) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    return scanMeta(metaTable, getTableStartRowForMeta(tableName, type),<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      getTableStopRowForMeta(tableName, type), type, Integer.MAX_VALUE, visitor);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * Performs a scan of META table for given table.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param metaTable<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param startRow Where to start the scan<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param stopRow Where to stop the scan<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * @param type scanned part of meta<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @param maxRows maximum rows to return<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @param visitor Visitor invoked against each row<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private static CompletableFuture&lt;Void&gt; scanMeta(AsyncTable&lt;AdvancedScanResultConsumer&gt; metaTable,<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      Optional&lt;byte[]&gt; startRow, Optional&lt;byte[]&gt; stopRow, QueryType type, int maxRows,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      final Visitor visitor) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    int rowUpperLimit = maxRows &gt; 0 ? maxRows : Integer.MAX_VALUE;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    Scan scan = getMetaScan(metaTable, rowUpperLimit);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    for (byte[] family : type.getFamilies()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      scan.addFamily(family);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    startRow.ifPresent(scan::withStartRow);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    stopRow.ifPresent(scan::withStopRow);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (LOG.isDebugEnabled()) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LOG.debug("Scanning META" + " starting at row=" + Bytes.toStringBinary(scan.getStartRow())<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          + " stopping at row=" + Bytes.toStringBinary(scan.getStopRow()) + " for max="<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + rowUpperLimit + " with caching=" + scan.getCaching());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    if (LOG.isDebugEnabled()) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      LOG.debug("Scanning META" + " starting at row=" + Bytes.toStringBinary(scan.getStartRow())<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          + " stopping at row=" + Bytes.toStringBinary(scan.getStopRow()) + " for max="<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          + rowUpperLimit + " with caching=" + scan.getCaching());<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future));<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return future;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">306</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return future;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private static final class MetaTableScanResultConsumer implements AdvancedScanResultConsumer {<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    private int currentRowCount;<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final int rowUpperLimit;<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private static final class MetaTableScanResultConsumer implements AdvancedScanResultConsumer {<a name="line.317"></a>
+<span class="sourceLineNo">317</span>    private final Visitor visitor;<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    private int currentRowCount;<a name="line.319"></a>
+<span class="sourceLineNo">319</span>    private final CompletableFuture&lt;Void&gt; future;<a name="line.319"></a>
 <span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private final int rowUpperLimit;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private final Visitor visitor;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    private final CompletableFuture&lt;Void&gt; future;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    MetaTableScanResultConsumer(int rowUpperLimit, Visitor visitor,<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        CompletableFuture&lt;Void&gt; future) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      this.rowUpperLimit = rowUpperLimit;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      this.visitor = visitor;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      this.future = future;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      this.currentRowCount = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    @Override<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    public void onError(Throwable error) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      future.completeExceptionally(error);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP_NONNULL_PARAM_VIOLATION",<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      justification = "https://github.com/findbugsproject/findbugs/issues/79")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public void onComplete() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      future.complete(null);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    @Override<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    public void onNext(Result[] results, ScanController controller) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      boolean terminateScan = false;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      for (Result result : results) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        try {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          if (!visitor.visit(result)) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>            terminateScan = true;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>            break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        } catch (Exception e) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>          future.completeExceptionally(e);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          terminateScan = true;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          break;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        if (++currentRowCount &gt;= rowUpperLimit) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          terminateScan = true;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          break;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      if (terminateScan) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        controller.terminate();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private static Scan getMetaScan(AsyncTable&lt;?&gt; metaTable, int rowUpperLimit) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    Scan scan = new Scan();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int scannerCaching = metaTable.getConfiguration().getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    if (metaTable.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    if (rowUpperLimit &lt;= scannerCaching) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      scan.setLimit(rowUpperLimit);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    int rows = Math.min(rowUpperLimit, scannerCaching);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    scan.setCaching(rows);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    return scan;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * Returns an HRegionLocationList extracted from the result.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return an HRegionLocationList containing all locations for the region range or null if we<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   *         can't deserialize the result.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  private static Optional&lt;RegionLocations&gt; getRegionLocations(final Result r) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    if (r == null) return Optional.empty();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    Optional&lt;RegionInfo&gt; regionInfo = getHRegionInfo(r, getRegionInfoColumn());<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (!regionInfo.isPresent()) return Optional.empty();<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;HRegionLocation&gt;(1);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    NavigableMap&lt;byte[], NavigableMap&lt;byte[], byte[]&gt;&gt; familyMap = r.getNoVersionMap();<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>    locations.add(getRegionLocation(r, regionInfo.get(), 0));<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>    NavigableMap&lt;byte[], byte[]&gt; infoMap = familyMap.get(getCatalogFamily());<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    if (infoMap == null) return Optional.of(new RegionLocations(locations));<a name="line.404"></a>
+<span class="sourceLineNo">321</span>    MetaTableScanResultConsumer(int rowUpperLimit, Visitor visitor,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        CompletableFuture&lt;Void&gt; future) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      this.rowUpperLimit = rowUpperLimit;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.visitor = visitor;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.future = future;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      this.currentRowCount = 0;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    public void onError(Throwable error) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      future.completeExceptionally(error);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP_NONNULL_PARAM_VIOLATION",<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      justification = "https://github.com/findbugsproject/findbugs/issues/79")<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public void onComplete() {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      future.complete(null);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>    @Override<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    public void onNext(Result[] results, ScanController controller) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      boolean terminateScan = false;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      for (Result result : results) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        try {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          if (!visitor.visit(result)) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            terminateScan = true;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            break;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        } catch (Exception e) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          future.completeExceptionally(e);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          terminateScan = true;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          break;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        if (++currentRowCount &gt;= rowUpperLimit) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          terminateScan = true;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      if (terminateScan) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        controller.terminate();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private static Scan getMetaScan(AsyncTable&lt;?&gt; metaTable, int rowUpperLimit) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    Scan scan = new Scan();<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    int scannerCaching = metaTable.getConfiguration().getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (metaTable.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    if (rowUpperLimit &lt;= scannerCaching) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      scan.setLimit(rowUpperLimit);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    int rows = Math.min(rowUpperLimit, scannerCaching);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    scan.setCaching(rows);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    return scan;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  /**<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Returns an HRegionLocationList extracted from the result.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * @return an HRegionLocationList containing all locations for the region range or null if we<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   *         can't deserialize the result.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private static Optional&lt;RegionLocations&gt; getRegionLocations(final Result r) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (r == null) return Optional.empty();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    Optional&lt;RegionInfo&gt; regionInfo = getHRegionInfo(r, getRegionInfoColumn());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    if (!regionInfo.isPresent()) return Optional.empty();<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;HRegionLocation&gt;(1);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    NavigableMap&lt;byte[], NavigableMap&lt;byte[], byte[]&gt;&gt; familyMap = r.getNoVersionMap();<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    locations.add(getRegionLocation(r, regionInfo.get(), 0));<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>    NavigableMap&lt;byte[], byte[]&gt; infoMap = familyMap.get(getCatalogFamily());<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    if (infoMap == null) return Optional.of(new RegionLocations(locations));<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    // iterate until all serverName columns are seen<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    int replicaId = 0;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    SortedMap&lt;byte[], byte[]&gt; serverMap = null;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    serverMap = infoMap.tailMap(serverColumn, false);<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // iterate until all serverName columns are seen<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    int replicaId = 0;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    SortedMap&lt;byte[], byte[]&gt; serverMap = null;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    serverMap = infoMap.tailMap(serverColumn, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    if (serverMap.isEmpty()) return Optional.of(new RegionLocations(locations));<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    for (Map.Entry&lt;byte[], byte[]&gt; entry : serverMap.entrySet()) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      replicaId = parseReplicaIdFromServerColumn(entry.getKey());<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      if (replicaId &lt; 0) {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      HRegionLocation location = getRegionLocation(r, regionInfo.get(), replicaId);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // In case the region replica is newly created, it's location might be null. We usually do not<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      // have HRL's in RegionLocations object with null ServerName. They are handled as null HRLs.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      if (location == null || location.getServerName() == null) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        locations.add(null);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      } else {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        locations.add(location);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return Optional.of(new RegionLocations(locations));<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Returns the HRegionLocation parsed from the given meta row Result<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * for the given regionInfo and replicaId. The regionInfo can be the default region info<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * for the replica.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * @param r the meta row result<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * @param regionInfo RegionInfo for default replica<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param replicaId the replicaId for the HRegionLocation<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @return HRegionLocation parsed from the given meta row Result for the given replicaId<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private static HRegionLocation getRegionLocation(final Result r, final RegionInfo regionInfo,<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      final int replicaId) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    Optional&lt;ServerName&gt; serverName = getServerName(r, replicaId);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    long seqNum = getSeqNumDuringOpen(r, replicaId);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    RegionInfo replicaInfo = RegionReplicaUtil.getRegionInfoForReplica(regionInfo, replicaId);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return new HRegionLocation(replicaInfo, serverName.orElse(null), seqNum);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * Returns a {@link ServerName} from catalog table {@link Result}.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param r Result to pull from<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @return A ServerName instance.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private static Optional&lt;ServerName&gt; getServerName(final Result r, final int replicaId) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), serverColumn);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    String hostAndPort = Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      cell.getValueLength());<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    byte[] startcodeColumn = getStartCodeColumn(replicaId);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    cell = r.getColumnLatestCell(getCatalogFamily(), startcodeColumn);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    try {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      return Optional.of(ServerName.valueOf(hostAndPort,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    } catch (IllegalArgumentException e) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      LOG.error("Ignoring invalid region for server " + hostAndPort + "; cell=" + cell, e);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      return Optional.empty();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * The latest seqnum that the server writing to meta observed when opening the region.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * E.g. the seqNum when the result of {@link #getServerName(Result, int)} was written.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * @param r Result to pull the seqNum from<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @return SeqNum, or HConstants.NO_SEQNUM if there's no value written.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private static long getSeqNumDuringOpen(final Result r, final int replicaId) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), getSeqNumColumn(replicaId));<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (cell == null || cell.getValueLength() == 0) return HConstants.NO_SEQNUM;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    return Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  /**<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param tableName table we're working with<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @return start row for scanning META according to query type<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   */<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  private static Optional&lt;byte[]&gt; getTableStartRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      QueryType type) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return tableName.map((table) -&gt; {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      switch (type) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        case REGION:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        case REPLICATION:<a name="line.493"></a>
-<span class="sourceLineNo">494</span>          byte[] startRow = new byte[table.getName().length + 2];<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          System.arraycopy(table.getName(), 0, startRow, 0, table.getName().length);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.496"></a>
-<span class="sourceLineNo">497</span>          startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          return startRow;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        case ALL:<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        case TABLE:<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        default:<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          return table.getName();<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    });<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @param tableName table we're working with<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * @return stop row for scanning META according to query type<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   */<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  private static Optional&lt;byte[]&gt; getTableStopRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      QueryType type) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    return tableName.map((table) -&gt; {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      final byte[] stopRow;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      switch (type) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        case REGION:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        case REPLICATION:<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          stopRow = new byte[table.getName().length + 3];<a name="line.518"></a>
-<span class="sourceLineNo">519</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>          stopRow[stopRow.length - 3] = ' ';<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          break;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        case ALL:<a name="line.524"></a>
-<span class="sourceLineNo">525</span>        case TABLE:<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        default:<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          stopRow = new byte[table.getName().length + 1];<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          stopRow[stopRow.length - 1] = ' ';<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          break;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      return stopRow;<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><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * Returns the RegionInfo object from the column {@link HConstants#CATALOG_FAMILY} and<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * &lt;code&gt;qualifier&lt;/code&gt; of the catalog table result.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param r a Result object from the catalog table scan<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param qualifier Column family qualifier<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @return An RegionInfo instance.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   */<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  private static Optional&lt;RegionInfo&gt; getHRegionInfo(final Result r, byte[] qualifier) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), qualifier);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (cell == null) return Optional.empty();<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return Optional.ofNullable(RegionInfo.parseFromOrNull(cell.getValueArray(),<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      cell.getValueOffset(), cell.getValueLength()));<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>  /**<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * Returns the column family used for meta columns.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @return HConstants.CATALOG_FAMILY.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  private static byte[] getCatalogFamily() {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    return HConstants.CATALOG_FAMILY;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>  /**<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * Returns the column family used for table columns.<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @return HConstants.TABLE_FAMILY.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   */<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  private static byte[] getTableFamily() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return HConstants.TABLE_FAMILY;<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>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Returns the column qualifier for serialized region info<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * @return HConstants.REGIONINFO_QUALIFIER<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  private static byte[] getRegionInfoColumn() {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return HConstants.REGIONINFO_QUALIFIER;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  /**<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Returns the column qualifier for serialized table state<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @return HConstants.TABLE_STATE_QUALIFIER<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   */<a name="line.577"></a>
-<span class="sourceLineNo">578</span>  private static byte[] getStateColumn() {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    return HConstants.TABLE_STATE_QUALIFIER;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
-<span class="sourceLineNo">581</span><a name="line.581"></a>
-<span class="sourceLineNo">582</span>  /**<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Returns the column qualifier for server column for replicaId<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param replicaId the replicaId of the region<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @return a byte[] for server column qualifier<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private static byte[] getServerColumn(int replicaId) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    return replicaId == 0<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      ? HConstants.SERVER_QUALIFIER<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      : Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Returns the column qualifier for server start code column for replicaId<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param replicaId the replicaId of the region<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @return a byte[] for server start code column qualifier<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
-<span class="sourceLineNo">599</span>  private static byte[] getStartCodeColumn(int replicaId) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    return replicaId == 0<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      ? HConstants.STARTCODE_QUALIFIER<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      : Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
-<span class="sourceLineNo">605</span><a name="line.605"></a>
-<span class="sourceLineNo">606</span>  /**<a name="line.606"></a>
-<span class="sourceLineNo">607</span>   * Returns the column qualifier for seqNum column for replicaId<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   * @param replicaId the replicaId of the region<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * @return a byte[] for seqNum column qualifier<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   */<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  private static byte[] getSeqNumColumn(int replicaId) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return replicaId == 0<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      ? HConstants.SEQNUM_QUALIFIER<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      : Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Parses the replicaId from the server column qualifier. See top of the class javadoc<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * for the actual meta layout<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param serverColumn the column qualifier<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @return an int for the replicaId<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   */<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  private static int parseReplicaIdFromServerColumn(byte[] serverColumn) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    String serverStr = Bytes.toString(serverColumn);<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>    Matcher matcher = SERVER_COLUMN_PATTERN.matcher(serverStr);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    if (matcher.matches() &amp;&amp; matcher.groupCount() &gt; 0) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      String group = matcher.group(1);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      if (group != null &amp;&amp; group.length() &gt; 0) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        return Integer.parseInt(group.substring(1), 16);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        return 0;<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>    return -1;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>}<a name="line.638"></a>
+<span class="sourceLineNo">406</span>    if (serverMap.isEmpty()) return Optional.of(new RegionLocations(locations));<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>    for (Map.Entry&lt;byte[], byte[]&gt; entry : serverMap.entrySet()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      replicaId = parseReplicaIdFromServerColumn(entry.getKey());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      if (replicaId &lt; 0) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        break;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      HRegionLocation location = getRegionLocation(r, regionInfo.get(), replicaId);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      // In case the region replica is newly created, it's location might be null. We usually do not<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // have HRL's in RegionLocations object with null ServerName. They are handled as null HRLs.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      if (location == null || location.getServerName() == null) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        locations.add(null);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } else {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        locations.add(location);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>    return Optional.of(new RegionLocations(locations));<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * Returns the HRegionLocation parsed from the given meta row Result<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * for the given regionInfo and replicaId. The regionInfo can be the default region info<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * for the replica.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @param r the meta row result<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * @param regionInfo RegionInfo for default replica<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * @param replicaId the replicaId for the HRegionLocation<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @return HRegionLocation parsed from the given meta row Result for the given replicaId<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private static HRegionLocation getRegionLocation(final Result r, final RegionInfo regionInfo,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      final int replicaId) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    Optional&lt;ServerName&gt; serverName = getServerName(r, replicaId);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    long seqNum = getSeqNumDuringOpen(r, replicaId);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    RegionInfo replicaInfo = RegionReplicaUtil.getRegionInfoForReplica(regionInfo, replicaId);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return new HRegionLocation(replicaInfo, serverName.orElse(null), seqNum);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Returns a {@link ServerName} from catalog table {@link Result}.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   * @param r Result to pull from<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return A ServerName instance.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  private static Optional&lt;ServerName&gt; getServerName(final Result r, final int replicaId) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    byte[] serverColumn = getServerColumn(replicaId);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), serverColumn);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    String hostAndPort = Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      cell.getValueLength());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    byte[] startcodeColumn = getStartCodeColumn(replicaId);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    cell = r.getColumnLatestCell(getCatalogFamily(), startcodeColumn);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (cell == null || cell.getValueLength() == 0) return Optional.empty();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    try {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      return Optional.of(ServerName.valueOf(hostAndPort,<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())));<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    } catch (IllegalArgumentException e) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      LOG.error("Ignoring invalid region for server " + hostAndPort + "; cell=" + cell, e);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      return Optional.empty();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
+<span class="sourceLineNo">464</span>  }<a name="line.464"></a>
+<span class="sourceLineNo">465</span><a name="line.465"></a>
+<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * The latest seqnum that the server writing to meta observed when opening the region.<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * E.g. the seqNum when the result of {@link #getServerName(Result, int)} was written.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @param r Result to pull the seqNum from<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @return SeqNum, or HConstants.NO_SEQNUM if there's no value written.<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  private static long getSeqNumDuringOpen(final Result r, final int replicaId) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), getSeqNumColumn(replicaId));<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    if (cell == null || cell.getValueLength() == 0) return HConstants.NO_SEQNUM;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>  /**<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param tableName table we're working with<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @return start row for scanning META according to query type<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private static Optional&lt;byte[]&gt; getTableStartRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      QueryType type) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    return tableName.map((table) -&gt; {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      switch (type) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        case REGION:<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        case REPLICATION:<a name="line.487"></a>
+<span class="sourceLineNo">488</span>          byte[] startRow = new byte[table.getName().length + 2];<a name="line.488"></a>
+<span class="sourceLineNo">489</span>          System.arraycopy(table.getName(), 0, startRow, 0, table.getName().length);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          return startRow;<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        case ALL:<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        case TABLE:<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        default:<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          return table.getName();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    });<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>  /**<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @param tableName table we're working with<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * @return stop row for scanning META according to query type<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  private static Optional&lt;byte[]&gt; getTableStopRowForMeta(Optional&lt;TableName&gt; tableName,<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      QueryType type) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    return tableName.map((table) -&gt; {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      final byte[] stopRow;<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      switch (type) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        case REGION:<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        case REPLICATION:<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          stopRow = new byte[table.getName().length + 3];<a name="line.512"></a>
+<span class="sourceLineNo">513</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>          stopRow[stopRow.length - 3] = ' ';<a name="line.514"></a>
+<span class="sourceLineNo">515</span>          stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.515"></a>
+<span class="sourceLineNo">516</span>          stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>          break;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>        case ALL:<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        case TABLE:<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        default:<a name="line.520"></a>
+<span class="sourceLineNo">521</span>          stopRow = new byte[table.getName().length + 1];<a name="line.521"></a>
+<span class="sourceLineNo">522</span>          System.arraycopy(table.getName(), 0, stopRow, 0, table.getName().length);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          stopRow[stopRow.length - 1] = ' ';<a name="line.523"></a>
+<span class="sourceLineNo">524</span>          break;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return stopRow;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    });<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>  /**<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * Returns the RegionInfo object from the column {@link HConstants#CATALOG_FAMILY} and<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * &lt;code&gt;qualifier&lt;/code&gt; of the catalog table result.<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param r a Result object from the catalog table scan<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param qualifier Column family qualifier<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @return An RegionInfo instance.<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  private static Optional&lt;RegionInfo&gt; getHRegionInfo(final Result r, byte[] qualifier) {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    Cell cell = r.getColumnLatestCell(getCatalogFamily(), qualifier);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    if (cell == null) return Optional.empty();<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return Optional.ofNullable(RegionInfo.parseFromOrNull(cell.getValueArray(),<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      cell.getValueOffset(), cell.getValueLength()));<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  /**<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * Returns the column family used for meta columns.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * @return HConstants.CATALOG_FAMILY.<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   */<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static byte[] getCatalogFamily() {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    return HConstants.CATALOG_FAMILY;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  }<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>   * Returns the column family used for table columns.<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @return HConstants.TABLE_FAMILY.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   */<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  private static byte[] getTableFamily() {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    return HConstants.TABLE_FAMILY;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  }<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>   * Returns the column qualifier for serialized region info<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @return HConstants.REGIONINFO_QUALIFIER<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  private static byte[] getRegionInfoColumn() {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    return HConstants.REGIONINFO_QUALIFIER;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  }<a name="line.566"></a>
+<span class="sourceLineNo">567</span><a name="line.567"></a>
+<span class="sourceLineNo">568</span>  /**<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   * Returns the column qualifier for serialized table state<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * @return HConstants.TABLE_STATE_QUALIFIER<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private static byte[] getStateColumn() {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    return HConstants.TABLE_STATE_QUALIFIER;<a name="line.573"></a>
+<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   * Returns the column qualifier for server column for replicaId<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * @param replicaId the replicaId of the region<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * @return a byte[] for server column qualifier<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   */<a name="line.580"></a>
+<span class="sourceLineNo">581</span>  private static byte[] getServerColumn(int replicaId) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    return replicaId == 0<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      ? HConstants.SERVER_QUALIFIER<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      : Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  /**<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * Returns the column qualifier for server start code column for replicaId<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * @param replicaId the replicaId of the region<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   * @return a byte[] for server start code column qualifier<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  private static byte[] getStartCodeColumn(int replicaId) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    return replicaId == 0<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      ? HConstants.STARTCODE_QUALIFIER<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      : Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.597"></a>
+<span class="sourceLineNo">598</span>  }<a name="line.598"></a>
+<span class="sourceLineNo">599</span><a name="line.599"></a>
+<span class="sourceLineNo">600</span>  /**<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * Returns the column qualifier for seqNum column for replicaId<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param replicaId the replicaId of the region<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @return a byte[] for seqNum column qualifier<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   */<a name="line.604"></a>
+<span class="sourceLineNo">605</span>  private static byte[] getSeqNumColumn(int replicaId) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    return replicaId == 0<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      ? HConstants.SEQNUM_QUALIFIER<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      : Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Parses the replicaId from the server column qualifier. See top of the class javadoc<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * for the actual meta layout<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param serverColumn the column qualifier<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @return an int for the replicaId<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   */<a name="line.617"></a>
+<span class="sourceLineNo">618</span>  private static int parseReplicaIdFromServerColumn(byte[] serverColumn) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    String serverStr = Bytes.toString(serverColumn);<a name="line.619"></a>
+<span class="sourceLineNo">620</span><a name="line.620"></a>
+<span class="sourceLineNo">621</span>    Matcher matcher = SERVER_COLUMN_PATTERN.matcher(serverStr);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    if (matcher.matches() &amp;&amp; matcher.groupCount() &gt; 0) {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      String group = matcher.group(1);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      if (group != null &amp;&amp; group.length() &gt; 0) {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>        return Integer.parseInt(group.substring(1), 16);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      } else {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>        return 0;<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      }<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    }<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return -1;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>}<a name="line.632"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index ab0544f..5113896 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
 <span class="sourceLineNo">011</span>  public static final String revision = "";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Fri Jan 11 14:38:59 UTC 2019";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Sun Jan 13 14:38:50 UTC 2019";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "d62aa8bb8bcd39f3443a15e6bab9cb64";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "39ebd2822680073cd13cd2ccb89956de";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html
index 08ae1f1..a4894db 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.AddColumnFamilyProcedureBiConsumer.html
@@ -423,3230 +423,3243 @@
 <span class="sourceLineNo">415</span><a name="line.415"></a>
 <span class="sourceLineNo">416</span>  @Override<a name="line.416"></a>
 <span class="sourceLineNo">417</span>  public CompletableFuture&lt;Boolean&gt; tableExists(TableName tableName) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    return AsyncMetaTableAccessor.tableExists(metaTable, tableName);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
-<span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt; listTableDescriptors(boolean includeSysTables) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(null,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      includeSysTables));<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * {@link #listTableDescriptors(boolean)}<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  @Override<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  public CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt; listTableDescriptors(Pattern pattern,<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      boolean includeSysTables) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    Preconditions.checkNotNull(pattern,<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      "pattern is null. If you don't specify a pattern, use listTables(boolean) instead");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(pattern,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      includeSysTables));<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>  private CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      getTableDescriptors(GetTableDescriptorsRequest request) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    return this.&lt;List&lt;TableDescriptor&gt;&gt; newMasterCaller()<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        .action((controller, stub) -&gt; this<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            .&lt;GetTableDescriptorsRequest, GetTableDescriptorsResponse, List&lt;TableDescriptor&gt;&gt; call(<a name="line.443"></a>
-<span class="sourceLineNo">444</span>              controller, stub, request, (s, c, req, done) -&gt; s.getTableDescriptors(c, req, done),<a name="line.444"></a>
-<span class="sourceLineNo">445</span>              (resp) -&gt; ProtobufUtil.toTableDescriptorList(resp)))<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        .call();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  @Override<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public CompletableFuture&lt;List&lt;TableName&gt;&gt; listTableNames(boolean includeSysTables) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    return getTableNames(RequestConverter.buildGetTableNamesRequest(null, includeSysTables));<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>  @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  public CompletableFuture&lt;List&lt;TableName&gt;&gt;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      listTableNames(Pattern pattern, boolean includeSysTables) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    Preconditions.checkNotNull(pattern,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        "pattern is null. If you don't specify a pattern, use listTableNames(boolean) instead");<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return getTableNames(RequestConverter.buildGetTableNamesRequest(pattern, includeSysTables));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  private CompletableFuture&lt;List&lt;TableName&gt;&gt; getTableNames(GetTableNamesRequest request) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    return this<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        .&lt;List&lt;TableName&gt;&gt; newMasterCaller()<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        .action(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          (controller, stub) -&gt; this<a name="line.466"></a>
-<span class="sourceLineNo">467</span>              .&lt;GetTableNamesRequest, GetTableNamesResponse, List&lt;TableName&gt;&gt; call(controller,<a name="line.467"></a>
-<span class="sourceLineNo">468</span>                stub, request, (s, c, req, done) -&gt; s.getTableNames(c, req, done),<a name="line.468"></a>
-<span class="sourceLineNo">469</span>                (resp) -&gt; ProtobufUtil.toTableNameList(resp.getTableNamesList()))).call();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt; listTableDescriptorsByNamespace(String name) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return this.&lt;List&lt;TableDescriptor&gt;&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        .&lt;ListTableDescriptorsByNamespaceRequest, ListTableDescriptorsByNamespaceResponse,<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        List&lt;TableDescriptor&gt;&gt; call(<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          controller, stub,<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          ListTableDescriptorsByNamespaceRequest.newBuilder().setNamespaceName(name).build(),<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          (s, c, req, done) -&gt; s.listTableDescriptorsByNamespace(c, req, done),<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          (resp) -&gt; ProtobufUtil.toTableDescriptorList(resp)))<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        .call();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @Override<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public CompletableFuture&lt;List&lt;TableName&gt;&gt; listTableNamesByNamespace(String name) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    return this.&lt;List&lt;TableName&gt;&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        .&lt;ListTableNamesByNamespaceRequest, ListTableNamesByNamespaceResponse,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        List&lt;TableName&gt;&gt; call(<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          controller, stub,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          ListTableNamesByNamespaceRequest.newBuilder().setNamespaceName(name).build(),<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          (s, c, req, done) -&gt; s.listTableNamesByNamespace(c, req, done),<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          (resp) -&gt; ProtobufUtil.toTableNameList(resp.getTableNameList())))<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        .call();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>  @Override<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public CompletableFuture&lt;TableDescriptor&gt; getDescriptor(TableName tableName) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    CompletableFuture&lt;TableDescriptor&gt; future = new CompletableFuture&lt;&gt;();<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    addListener(this.&lt;List&lt;TableSchema&gt;&gt; newMasterCaller()<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      .action((controller, stub) -&gt; this<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        .&lt;GetTableDescriptorsRequest, GetTableDescriptorsResponse, List&lt;TableSchema&gt;&gt; call(<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          controller, stub, RequestConverter.buildGetTableDescriptorsRequest(tableName),<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          (s, c, req, done) -&gt; s.getTableDescriptors(c, req, done),<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          (resp) -&gt; resp.getTableSchemaList()))<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      .call(), (tableSchemas, error) -&gt; {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        if (error != null) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          future.completeExceptionally(error);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          return;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>        }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        if (!tableSchemas.isEmpty()) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>          future.complete(ProtobufUtil.toTableDescriptor(tableSchemas.get(0)));<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        } else {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>          future.completeExceptionally(new TableNotFoundException(tableName.getNameAsString()));<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      });<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    return future;<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  @Override<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  public CompletableFuture&lt;Void&gt; createTable(TableDescriptor desc) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    return createTable(desc.getTableName(),<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      RequestConverter.buildCreateTableRequest(desc, null, ng.getNonceGroup(), ng.newNonce()));<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>  @Override<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  public CompletableFuture&lt;Void&gt; createTable(TableDescriptor desc, byte[] startKey, byte[] endKey,<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      int numRegions) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    try {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      return createTable(desc, getSplitKeys(startKey, endKey, numRegions));<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    } catch (IllegalArgumentException e) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      return failedFuture(e);<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><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @Override<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public CompletableFuture&lt;Void&gt; createTable(TableDescriptor desc, byte[][] splitKeys) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    Preconditions.checkNotNull(splitKeys, "splitKeys is null. If you don't specify splitKeys,"<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        + " use createTable(TableDescriptor) instead");<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    try {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      verifySplitKeys(splitKeys);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      return createTable(desc.getTableName(), RequestConverter.buildCreateTableRequest(desc,<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        splitKeys, ng.getNonceGroup(), ng.newNonce()));<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    } catch (IllegalArgumentException e) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      return failedFuture(e);<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><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  private CompletableFuture&lt;Void&gt; createTable(TableName tableName, CreateTableRequest request) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    Preconditions.checkNotNull(tableName, "table name is null");<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return this.&lt;CreateTableRequest, CreateTableResponse&gt; procedureCall(request,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      (s, c, req, done) -&gt; s.createTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      new CreateTableProcedureBiConsumer(tableName));<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public CompletableFuture&lt;Void&gt; modifyTable(TableDescriptor desc) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return this.&lt;ModifyTableRequest, ModifyTableResponse&gt; procedureCall(<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      RequestConverter.buildModifyTableRequest(desc.getTableName(), desc, ng.getNonceGroup(),<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        ng.newNonce()), (s, c, req, done) -&gt; s.modifyTable(c, req, done),<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      (resp) -&gt; resp.getProcId(), new ModifyTableProcedureBiConsumer(this, desc.getTableName()));<a name="line.560"></a>
-<span class="sourceLineNo">561</span>  }<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>  @Override<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  public CompletableFuture&lt;Void&gt; deleteTable(TableName tableName) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    return this.&lt;DeleteTableRequest, DeleteTableResponse&gt; procedureCall(RequestConverter<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        .buildDeleteTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()),<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      (s, c, req, done) -&gt; s.deleteTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      new DeleteTableProcedureBiConsumer(tableName));<a name="line.568"></a>
-<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>  @Override<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  public CompletableFuture&lt;Void&gt; truncateTable(TableName tableName, boolean preserveSplits) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    return this.&lt;TruncateTableRequest, TruncateTableResponse&gt; procedureCall(<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      RequestConverter.buildTruncateTableRequest(tableName, preserveSplits, ng.getNonceGroup(),<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        ng.newNonce()), (s, c, req, done) -&gt; s.truncateTable(c, req, done),<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      (resp) -&gt; resp.getProcId(), new TruncateTableProcedureBiConsumer(tableName));<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>  @Override<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  public CompletableFuture&lt;Void&gt; enableTable(TableName tableName) {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    return this.&lt;EnableTableRequest, EnableTableResponse&gt; procedureCall(RequestConverter<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        .buildEnableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()),<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      (s, c, req, done) -&gt; s.enableTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      new EnableTableProcedureBiConsumer(tableName));<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  @Override<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  public CompletableFuture&lt;Void&gt; disableTable(TableName tableName) {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    return this.&lt;DisableTableRequest, DisableTableResponse&gt; procedureCall(RequestConverter<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        .buildDisableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()),<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      (s, c, req, done) -&gt; s.disableTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      new DisableTableProcedureBiConsumer(tableName));<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>  @Override<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  public CompletableFuture&lt;Boolean&gt; isTableEnabled(TableName tableName) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    CompletableFuture&lt;Boolean&gt; future = new CompletableFuture&lt;&gt;();<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    addListener(AsyncMetaTableAccessor.getTableState(metaTable, tableName), (state, error) -&gt; {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      if (error != null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        future.completeExceptionally(error);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        return;<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      }<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      if (state.isPresent()) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        future.complete(state.get().inStates(TableState.State.ENABLED));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      } else {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        future.completeExceptionally(new TableNotFoundException(tableName));<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>    return future;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>  @Override<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public CompletableFuture&lt;Boolean&gt; isTableDisabled(TableName tableName) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    CompletableFuture&lt;Boolean&gt; future = new CompletableFuture&lt;&gt;();<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    addListener(AsyncMetaTableAccessor.getTableState(metaTable, tableName), (state, error) -&gt; {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      if (error != null) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        future.completeExceptionally(error);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        return;<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      }<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      if (state.isPresent()) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>        future.complete(state.get().inStates(TableState.State.DISABLED));<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      } else {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        future.completeExceptionally(new TableNotFoundException(tableName));<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>    return future;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>  @Override<a name="line.629"></a>
-<span class="sourceLineNo">630</span>  public CompletableFuture&lt;Boolean&gt; isTableAvailable(TableName tableName) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    return isTableAvailable(tableName, Optional.empty());<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>  @Override<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  public CompletableFuture&lt;Boolean&gt; isTableAvailable(TableName tableName, byte[][] splitKeys) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    Preconditions.checkNotNull(splitKeys, "splitKeys is null. If you don't specify splitKeys,"<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        + " use isTableAvailable(TableName) instead");<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return isTableAvailable(tableName, Optional.of(splitKeys));<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>  private CompletableFuture&lt;Boolean&gt; isTableAvailable(TableName tableName,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      Optional&lt;byte[][]&gt; splitKeys) {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    CompletableFuture&lt;Boolean&gt; future = new CompletableFuture&lt;&gt;();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    addListener(isTableEnabled(tableName), (enabled, error) -&gt; {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      if (error != null) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        future.completeExceptionally(error);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        return;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      }<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      if (!enabled) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        future.complete(false);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      } else {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        addListener(<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName)),<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          (locations, error1) -&gt; {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>            if (error1 != null) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>              future.completeExceptionally(error1);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>              return;<a name="line.657"></a>
-<span class="sourceLineNo">658</span>            }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>            List&lt;HRegionLocation&gt; notDeployedRegions = locations.stream()<a name="line.659"></a>
-<span class="sourceLineNo">660</span>              .filter(loc -&gt; loc.getServerName() == null).collect(Collectors.toList());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>            if (notDeployedRegions.size() &gt; 0) {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              if (LOG.isDebugEnabled()) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>                LOG.debug("Table " + tableName + " has " + notDeployedRegions.size() + " regions");<a name="line.663"></a>
-<span class="sourceLineNo">664</span>              }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>              future.complete(false);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>              return;<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>            Optional&lt;Boolean&gt; available =<a name="line.669"></a>
-<span class="sourceLineNo">670</span>              splitKeys.map(keys -&gt; compareRegionsWithSplitKeys(locations, keys));<a name="line.670"></a>
-<span class="sourceLineNo">671</span>            future.complete(available.orElse(true));<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          });<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    });<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    return future;<a name="line.675"></a>
-<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>  private boolean compareRegionsWithSplitKeys(List&lt;HRegionLocation&gt; locations, byte[][] splitKeys) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    int regionCount = 0;<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    for (HRegionLocation location : locations) {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      RegionInfo info = location.getRegion();<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        regionCount++;<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        continue;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      for (byte[] splitKey : splitKeys) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        // Just check if the splitkey is available<a name="line.687"></a>
-<span class="sourceLineNo">688</span>        if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          regionCount++;<a name="line.689"></a>
-<span class="sourceLineNo">690</span>          break;<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>    }<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    return regionCount == splitKeys.length + 1;<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>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public CompletableFuture&lt;Void&gt; addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    return this.&lt;AddColumnRequest, AddColumnResponse&gt; procedureCall(<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      RequestConverter.buildAddColumnRequest(tableName, columnFamily, ng.getNonceGroup(),<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        ng.newNonce()), (s, c, req, done) -&gt; s.addColumn(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      new AddColumnFamilyProcedureBiConsumer(tableName));<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>  @Override<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  public CompletableFuture&lt;Void&gt; deleteColumnFamily(TableName tableName, byte[] columnFamily) {<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    return this.&lt;DeleteColumnRequest, DeleteColumnResponse&gt; procedureCall(<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      RequestConverter.buildDeleteColumnRequest(tableName, columnFamily, ng.getNonceGroup(),<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        ng.newNonce()), (s, c, req, done) -&gt; s.deleteColumn(c, req, done),<a name="line.709"></a>
-<span class="sourceLineNo">710</span>      (resp) -&gt; resp.getProcId(), new DeleteColumnFamilyProcedureBiConsumer(tableName));<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>  @Override<a name="line.713"></a>
-<span class="sourceLineNo">714</span>  public CompletableFuture&lt;Void&gt; modifyColumnFamily(TableName tableName,<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      ColumnFamilyDescriptor columnFamily) {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    return this.&lt;ModifyColumnRequest, ModifyColumnResponse&gt; procedureCall(<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      RequestConverter.buildModifyColumnRequest(tableName, columnFamily, ng.getNonceGroup(),<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        ng.newNonce()), (s, c, req, done) -&gt; s.modifyColumn(c, req, done),<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      (resp) -&gt; resp.getProcId(), new ModifyColumnFamilyProcedureBiConsumer(tableName));<a name="line.719"></a>
-<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>  @Override<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  public CompletableFuture&lt;Void&gt; createNamespace(NamespaceDescriptor descriptor) {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    return this.&lt;CreateNamespaceRequest, CreateNamespaceResponse&gt; procedureCall(<a name="line.724"></a>
-<span class="sourceLineNo">725</span>      RequestConverter.buildCreateNamespaceRequest(descriptor),<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      (s, c, req, done) -&gt; s.createNamespace(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      new CreateNamespaceProcedureBiConsumer(descriptor.getName()));<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
-<span class="sourceLineNo">729</span><a name="line.729"></a>
-<span class="sourceLineNo">730</span>  @Override<a name="line.730"></a>
-<span class="sourceLineNo">731</span>  public CompletableFuture&lt;Void&gt; modifyNamespace(NamespaceDescriptor descriptor) {<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    return this.&lt;ModifyNamespaceRequest, ModifyNamespaceResponse&gt; procedureCall(<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      RequestConverter.buildModifyNamespaceRequest(descriptor),<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      (s, c, req, done) -&gt; s.modifyNamespace(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      new ModifyNamespaceProcedureBiConsumer(descriptor.getName()));<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  @Override<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  public CompletableFuture&lt;Void&gt; deleteNamespace(String name) {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return this.&lt;DeleteNamespaceRequest, DeleteNamespaceResponse&gt; procedureCall(<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      RequestConverter.buildDeleteNamespaceRequest(name),<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      (s, c, req, done) -&gt; s.deleteNamespace(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      new DeleteNamespaceProcedureBiConsumer(name));<a name="line.743"></a>
-<span class="sourceLineNo">744</span>  }<a name="line.744"></a>
-<span class="sourceLineNo">745</span><a name="line.745"></a>
-<span class="sourceLineNo">746</span>  @Override<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  public CompletableFuture&lt;NamespaceDescriptor&gt; getNamespaceDescriptor(String name) {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    return this<a name="line.748"></a>
-<span class="sourceLineNo">749</span>        .&lt;NamespaceDescriptor&gt; newMasterCaller()<a name="line.749"></a>
-<span class="sourceLineNo">750</span>        .action(<a name="line.750"></a>
-<span class="sourceLineNo">751</span>          (controller, stub) -&gt; this<a name="line.751"></a>
-<span class="sourceLineNo">752</span>              .&lt;GetNamespaceDescriptorRequest, GetNamespaceDescriptorResponse, NamespaceDescriptor&gt; call(<a name="line.752"></a>
-<span class="sourceLineNo">753</span>                controller, stub, RequestConverter.buildGetNamespaceDescriptorRequest(name), (s, c,<a name="line.753"></a>
-<span class="sourceLineNo">754</span>                    req, done) -&gt; s.getNamespaceDescriptor(c, req, done), (resp) -&gt; ProtobufUtil<a name="line.754"></a>
-<span class="sourceLineNo">755</span>                    .toNamespaceDescriptor(resp.getNamespaceDescriptor()))).call();<a name="line.755"></a>
-<span class="sourceLineNo">756</span>  }<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>  @Override<a name="line.758"></a>
-<span class="sourceLineNo">759</span>  public CompletableFuture&lt;List&lt;NamespaceDescriptor&gt;&gt; listNamespaceDescriptors() {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return this<a name="line.760"></a>
-<span class="sourceLineNo">761</span>        .&lt;List&lt;NamespaceDescriptor&gt;&gt; newMasterCaller()<a name="line.761"></a>
-<span class="sourceLineNo">762</span>        .action(<a name="line.762"></a>
-<span class="sourceLineNo">763</span>          (controller, stub) -&gt; this<a name="line.763"></a>
-<span class="sourceLineNo">764</span>              .&lt;ListNamespaceDescriptorsRequest, ListNamespaceDescriptorsResponse, List&lt;NamespaceDescriptor&gt;&gt; call(<a name="line.764"></a>
-<span class="sourceLineNo">765</span>                controller, stub, ListNamespaceDescriptorsRequest.newBuilder().build(), (s, c, req,<a name="line.765"></a>
-<span class="sourceLineNo">766</span>                    done) -&gt; s.listNamespaceDescriptors(c, req, done), (resp) -&gt; ProtobufUtil<a name="line.766"></a>
-<span class="sourceLineNo">767</span>                    .toNamespaceDescriptorList(resp))).call();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
-<span class="sourceLineNo">769</span><a name="line.769"></a>
-<span class="sourceLineNo">770</span>  @Override<a name="line.770"></a>
-<span class="sourceLineNo">771</span>  public CompletableFuture&lt;List&lt;RegionInfo&gt;&gt; getRegions(ServerName serverName) {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    return this.&lt;List&lt;RegionInfo&gt;&gt; newAdminCaller()<a name="line.772"></a>
-<span class="sourceLineNo">773</span>        .action((controller, stub) -&gt; this<a name="line.773"></a>
-<span class="sourceLineNo">774</span>            .&lt;GetOnlineRegionRequest, GetOnlineRegionResponse, List&lt;RegionInfo&gt;&gt; adminCall(<a name="line.774"></a>
-<span class="sourceLineNo">775</span>              controller, stub, RequestConverter.buildGetOnlineRegionRequest(),<a name="line.775"></a>
-<span class="sourceLineNo">776</span>              (s, c, req, done) -&gt; s.getOnlineRegion(c, req, done),<a name="line.776"></a>
-<span class="sourceLineNo">777</span>              resp -&gt; ProtobufUtil.getRegionInfos(resp)))<a name="line.777"></a>
-<span class="sourceLineNo">778</span>        .serverName(serverName).call();<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>  @Override<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  public CompletableFuture&lt;List&lt;RegionInfo&gt;&gt; getRegions(TableName tableName) {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    if (tableName.equals(META_TABLE_NAME)) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      return connection.getLocator().getRegionLocation(tableName, null, null, operationTimeoutNs)<a name="line.784"></a>
-<span class="sourceLineNo">785</span>          .thenApply(loc -&gt; Collections.singletonList(loc.getRegion()));<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    } else {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      return AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName))<a name="line.787"></a>
-<span class="sourceLineNo">788</span>          .thenApply(<a name="line.788"></a>
-<span class="sourceLineNo">789</span>            locs -&gt; locs.stream().map(loc -&gt; loc.getRegion()).collect(Collectors.toList()));<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span>  }<a name="line.791"></a>
-<span class="sourceLineNo">792</span><a name="line.792"></a>
-<span class="sourceLineNo">793</span>  @Override<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  public CompletableFuture&lt;Void&gt; flush(TableName tableName) {<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    addListener(tableExists(tableName), (exists, err) -&gt; {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      if (err != null) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        future.completeExceptionally(err);<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      } else if (!exists) {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>        future.completeExceptionally(new TableNotFoundException(tableName));<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      } else {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        addListener(isTableEnabled(tableName), (tableEnabled, err2) -&gt; {<a name="line.802"></a>
-<span class="sourceLineNo">803</span>          if (err2 != null) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>            future.completeExceptionally(err2);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>          } else if (!tableEnabled) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>            future.completeExceptionally(new TableNotEnabledException(tableName));<a name="line.806"></a>
-<span class="sourceLineNo">807</span>          } else {<a name="line.807"></a>
-<span class="sourceLineNo">808</span>            addListener(execProcedure(FLUSH_TABLE_PROCEDURE_SIGNATURE, tableName.getNameAsString(),<a name="line.808"></a>
-<span class="sourceLineNo">809</span>              new HashMap&lt;&gt;()), (ret, err3) -&gt; {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>                if (err3 != null) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>                  future.completeExceptionally(err3);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>                } else {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>                  future.complete(ret);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>                }<a name="line.814"></a>
-<span class="sourceLineNo">815</span>              });<a name="line.815"></a>
-<span class="sourceLineNo">816</span>          }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>        });<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      }<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    });<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    return future;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>  }<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>  @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  public CompletableFuture&lt;Void&gt; flushRegion(byte[] regionName) {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      if (err != null) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        future.completeExceptionally(err);<a name="line.828"></a>
-<span class="sourceLineNo">829</span>        return;<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      }<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      ServerName serverName = location.getServerName();<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      if (serverName == null) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        future<a name="line.833"></a>
-<span class="sourceLineNo">834</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        return;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>      addListener(flush(serverName, location.getRegion()), (ret, err2) -&gt; {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>        if (err2 != null) {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>          future.completeExceptionally(err2);<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        } else {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          future.complete(ret);<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        }<a name="line.842"></a>
-<span class="sourceLineNo">843</span>      });<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    });<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    return future;<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  }<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private CompletableFuture&lt;Void&gt; flush(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    return this.&lt;Void&gt; newAdminCaller()<a name="line.849"></a>
-<span class="sourceLineNo">850</span>            .serverName(serverName)<a name="line.850"></a>
-<span class="sourceLineNo">851</span>            .action(<a name="line.851"></a>
-<span class="sourceLineNo">852</span>              (controller, stub) -&gt; this.&lt;FlushRegionRequest, FlushRegionResponse, Void&gt; adminCall(<a name="line.852"></a>
-<span class="sourceLineNo">853</span>                controller, stub, RequestConverter.buildFlushRegionRequest(regionInfo<a name="line.853"></a>
-<span class="sourceLineNo">854</span>                  .getRegionName()), (s, c, req, done) -&gt; s.flushRegion(c, req, done),<a name="line.854"></a>
-<span class="sourceLineNo">855</span>                resp -&gt; null))<a name="line.855"></a>
-<span class="sourceLineNo">856</span>            .call();<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>  @Override<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public CompletableFuture&lt;Void&gt; flushRegionServer(ServerName sn) {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    addListener(getRegions(sn), (hRegionInfos, err) -&gt; {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      if (err != null) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>        future.completeExceptionally(err);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        return;<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      }<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      List&lt;CompletableFuture&lt;Void&gt;&gt; compactFutures = new ArrayList&lt;&gt;();<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      if (hRegionInfos != null) {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        hRegionInfos.forEach(region -&gt; compactFutures.add(flush(sn, region)));<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      }<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      addListener(CompletableFuture.allOf(<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        compactFutures.toArray(new CompletableFuture&lt;?&gt;[compactFutures.size()])), (ret, err2) -&gt; {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>          if (err2 != null) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>            future.completeExceptionally(err2);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          } else {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>            future.complete(ret);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          }<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        });<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    });<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    return future;<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>  @Override<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public CompletableFuture&lt;Void&gt; compact(TableName tableName, CompactType compactType) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return compact(tableName, null, false, compactType);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  @Override<a name="line.888"></a>
-<span class="sourceLineNo">889</span>  public CompletableFuture&lt;Void&gt; compact(TableName tableName, byte[] columnFamily,<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      CompactType compactType) {<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null. "<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        + "If you don't specify a columnFamily, use compact(TableName) instead");<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    return compact(tableName, columnFamily, false, compactType);<a name="line.893"></a>
+<span class="sourceLineNo">418</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      return CompletableFuture.completedFuture(true);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    return AsyncMetaTableAccessor.tableExists(metaTable, tableName);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @Override<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt; listTableDescriptors(boolean includeSysTables) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(null,<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      includeSysTables));<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * {@link #listTableDescriptors(boolean)}<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  @Override<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  public CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt; listTableDescriptors(Pattern pattern,<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      boolean includeSysTables) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    Preconditions.checkNotNull(pattern,<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      "pattern is null. If you don't specify a pattern, use listTables(boolean) instead");<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(pattern,<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      includeSysTables));<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  private CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt;<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      getTableDescriptors(GetTableDescriptorsRequest request) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return this.&lt;List&lt;TableDescriptor&gt;&gt; newMasterCaller()<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        .action((controller, stub) -&gt; this<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            .&lt;GetTableDescriptorsRequest, GetTableDescriptorsResponse, List&lt;TableDescriptor&gt;&gt; call(<a name="line.446"></a>
+<span class="sourceLineNo">447</span>              controller, stub, request, (s, c, req, done) -&gt; s.getTableDescriptors(c, req, done),<a name="line.447"></a>
+<span class="sourceLineNo">448</span>              (resp) -&gt; ProtobufUtil.toTableDescriptorList(resp)))<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        .call();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  @Override<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public CompletableFuture&lt;List&lt;TableName&gt;&gt; listTableNames(boolean includeSysTables) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    return getTableNames(RequestConverter.buildGetTableNamesRequest(null, includeSysTables));<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public CompletableFuture&lt;List&lt;TableName&gt;&gt;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      listTableNames(Pattern pattern, boolean includeSysTables) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    Preconditions.checkNotNull(pattern,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        "pattern is null. If you don't specify a pattern, use listTableNames(boolean) instead");<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return getTableNames(RequestConverter.buildGetTableNamesRequest(pattern, includeSysTables));<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  private CompletableFuture&lt;List&lt;TableName&gt;&gt; getTableNames(GetTableNamesRequest request) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return this<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        .&lt;List&lt;TableName&gt;&gt; newMasterCaller()<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        .action(<a name="line.468"></a>
+<span class="sourceLineNo">469</span>          (controller, stub) -&gt; this<a name="line.469"></a>
+<span class="sourceLineNo">470</span>              .&lt;GetTableNamesRequest, GetTableNamesResponse, List&lt;TableName&gt;&gt; call(controller,<a name="line.470"></a>
+<span class="sourceLineNo">471</span>                stub, request, (s, c, req, done) -&gt; s.getTableNames(c, req, done),<a name="line.471"></a>
+<span class="sourceLineNo">472</span>                (resp) -&gt; ProtobufUtil.toTableNameList(resp.getTableNamesList()))).call();<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>  @Override<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public CompletableFuture&lt;List&lt;TableDescriptor&gt;&gt; listTableDescriptorsByNamespace(String name) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return this.&lt;List&lt;TableDescriptor&gt;&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        .&lt;ListTableDescriptorsByNamespaceRequest, ListTableDescriptorsByNamespaceResponse,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        List&lt;TableDescriptor&gt;&gt; call(<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          controller, stub,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>          ListTableDescriptorsByNamespaceRequest.newBuilder().setNamespaceName(name).build(),<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          (s, c, req, done) -&gt; s.listTableDescriptorsByNamespace(c, req, done),<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          (resp) -&gt; ProtobufUtil.toTableDescriptorList(resp)))<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        .call();<a name="line.484"></a>
+<span class="sourceLineNo">485</span>  }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  @Override<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  public CompletableFuture&lt;List&lt;TableName&gt;&gt; listTableNamesByNamespace(String name) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return this.&lt;List&lt;TableName&gt;&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        .&lt;ListTableNamesByNamespaceRequest, ListTableNamesByNamespaceResponse,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        List&lt;TableName&gt;&gt; call(<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          controller, stub,<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          ListTableNamesByNamespaceRequest.newBuilder().setNamespaceName(name).build(),<a name="line.493"></a>
+<span class="sourceLineNo">494</span>          (s, c, req, done) -&gt; s.listTableNamesByNamespace(c, req, done),<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          (resp) -&gt; ProtobufUtil.toTableNameList(resp.getTableNameList())))<a name="line.495"></a>
+<span class="sourceLineNo">496</span>        .call();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  @Override<a name="line.499"></a>
+<span class="sourceLineNo">500</span>  public CompletableFuture&lt;TableDescriptor&gt; getDescriptor(TableName tableName) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    CompletableFuture&lt;TableDescriptor&gt; future = new CompletableFuture&lt;&gt;();<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    addListener(this.&lt;List&lt;TableSchema&gt;&gt; newMasterCaller()<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      .action((controller, stub) -&gt; this<a name="line.503"></a>
+<span class="sourceLineNo">504</span>        .&lt;GetTableDescriptorsRequest, GetTableDescriptorsResponse, List&lt;TableSchema&gt;&gt; call(<a name="line.504"></a>
+<span class="sourceLineNo">505</span>          controller, stub, RequestConverter.buildGetTableDescriptorsRequest(tableName),<a name="line.505"></a>
+<span class="sourceLineNo">506</span>          (s, c, req, done) -&gt; s.getTableDescriptors(c, req, done),<a name="line.506"></a>
+<span class="sourceLineNo">507</span>          (resp) -&gt; resp.getTableSchemaList()))<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      .call(), (tableSchemas, error) -&gt; {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        if (error != null) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          future.completeExceptionally(error);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>          return;<a name="line.511"></a>
+<span class="sourceLineNo">512</span>        }<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        if (!tableSchemas.isEmpty()) {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>          future.complete(ProtobufUtil.toTableDescriptor(tableSchemas.get(0)));<a name="line.514"></a>
+<span class="sourceLineNo">515</span>        } else {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>          future.completeExceptionally(new TableNotFoundException(tableName.getNameAsString()));<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        }<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      });<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    return future;<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>  @Override<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  public CompletableFuture&lt;Void&gt; createTable(TableDescriptor desc) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    return createTable(desc.getTableName(),<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      RequestConverter.buildCreateTableRequest(desc, null, ng.getNonceGroup(), ng.newNonce()));<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>  @Override<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public CompletableFuture&lt;Void&gt; createTable(TableDescriptor desc, byte[] startKey, byte[] endKey,<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      int numRegions) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    try {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      return createTable(desc, getSplitKeys(startKey, endKey, numRegions));<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    } catch (IllegalArgumentException e) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      return failedFuture(e);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span>  @Override<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public CompletableFuture&lt;Void&gt; createTable(TableDescriptor desc, byte[][] splitKeys) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    Preconditions.checkNotNull(splitKeys, "splitKeys is null. If you don't specify splitKeys,"<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        + " use createTable(TableDescriptor) instead");<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      verifySplitKeys(splitKeys);<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      return createTable(desc.getTableName(), RequestConverter.buildCreateTableRequest(desc,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        splitKeys, ng.getNonceGroup(), ng.newNonce()));<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    } catch (IllegalArgumentException e) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      return failedFuture(e);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>  private CompletableFuture&lt;Void&gt; createTable(TableName tableName, CreateTableRequest request) {<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    Preconditions.checkNotNull(tableName, "table name is null");<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    return this.&lt;CreateTableRequest, CreateTableResponse&gt; procedureCall(request,<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      (s, c, req, done) -&gt; s.createTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      new CreateTableProcedureBiConsumer(tableName));<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>  @Override<a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public CompletableFuture&lt;Void&gt; modifyTable(TableDescriptor desc) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    return this.&lt;ModifyTableRequest, ModifyTableResponse&gt; procedureCall(<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      RequestConverter.buildModifyTableRequest(desc.getTableName(), desc, ng.getNonceGroup(),<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        ng.newNonce()), (s, c, req, done) -&gt; s.modifyTable(c, req, done),<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      (resp) -&gt; resp.getProcId(), new ModifyTableProcedureBiConsumer(this, desc.getTableName()));<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>  @Override<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  public CompletableFuture&lt;Void&gt; deleteTable(TableName tableName) {<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this.&lt;DeleteTableRequest, DeleteTableResponse&gt; procedureCall(RequestConverter<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        .buildDeleteTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()),<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      (s, c, req, done) -&gt; s.deleteTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      new DeleteTableProcedureBiConsumer(tableName));<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>  @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>  public CompletableFuture&lt;Void&gt; truncateTable(TableName tableName, boolean preserveSplits) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    return this.&lt;TruncateTableRequest, TruncateTableResponse&gt; procedureCall(<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      RequestConverter.buildTruncateTableRequest(tableName, preserveSplits, ng.getNonceGroup(),<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        ng.newNonce()), (s, c, req, done) -&gt; s.truncateTable(c, req, done),<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      (resp) -&gt; resp.getProcId(), new TruncateTableProcedureBiConsumer(tableName));<a name="line.579"></a>
+<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span>  @Override<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  public CompletableFuture&lt;Void&gt; enableTable(TableName tableName) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    return this.&lt;EnableTableRequest, EnableTableResponse&gt; procedureCall(RequestConverter<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        .buildEnableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()),<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      (s, c, req, done) -&gt; s.enableTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      new EnableTableProcedureBiConsumer(tableName));<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  }<a name="line.588"></a>
+<span class="sourceLineNo">589</span><a name="line.589"></a>
+<span class="sourceLineNo">590</span>  @Override<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  public CompletableFuture&lt;Void&gt; disableTable(TableName tableName) {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    return this.&lt;DisableTableRequest, DisableTableResponse&gt; procedureCall(RequestConverter<a name="line.592"></a>
+<span class="sourceLineNo">593</span>        .buildDisableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()),<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      (s, c, req, done) -&gt; s.disableTable(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      new DisableTableProcedureBiConsumer(tableName));<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>  @Override<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  public CompletableFuture&lt;Boolean&gt; isTableEnabled(TableName tableName) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      return CompletableFuture.completedFuture(true);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    }<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    CompletableFuture&lt;Boolean&gt; future = new CompletableFuture&lt;&gt;();<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    addListener(AsyncMetaTableAccessor.getTableState(metaTable, tableName), (state, error) -&gt; {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      if (error != null) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        future.completeExceptionally(error);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>        return;<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      }<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      if (state.isPresent()) {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        future.complete(state.get().inStates(TableState.State.ENABLED));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      } else {<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        future.completeExceptionally(new TableNotFoundException(tableName));<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      }<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    });<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    return future;<a name="line.615"></a>
+<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>  @Override<a name="line.618"></a>
+<span class="sourceLineNo">619</span>  public CompletableFuture&lt;Boolean&gt; isTableDisabled(TableName tableName) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      return CompletableFuture.completedFuture(false);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    }<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    CompletableFuture&lt;Boolean&gt; future = new CompletableFuture&lt;&gt;();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    addListener(AsyncMetaTableAccessor.getTableState(metaTable, tableName), (state, error) -&gt; {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      if (error != null) {<a name="line.625"></a>
+<span class="sourceLineNo">626</span>        future.completeExceptionally(error);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>        return;<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      }<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      if (state.isPresent()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        future.complete(state.get().inStates(TableState.State.DISABLED));<a name="line.630"></a>
+<span class="sourceLineNo">631</span>      } else {<a name="line.631"></a>
+<span class="sourceLineNo">632</span>        future.completeExceptionally(new TableNotFoundException(tableName));<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>    return future;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>  }<a name="line.636"></a>
+<span class="sourceLineNo">637</span><a name="line.637"></a>
+<span class="sourceLineNo">638</span>  @Override<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  public CompletableFuture&lt;Boolean&gt; isTableAvailable(TableName tableName) {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    return isTableAvailable(tableName, Optional.empty());<a name="line.640"></a>
+<span class="sourceLineNo">641</span>  }<a name="line.641"></a>
+<span class="sourceLineNo">642</span><a name="line.642"></a>
+<span class="sourceLineNo">643</span>  @Override<a name="line.643"></a>
+<span class="sourceLineNo">644</span>  public CompletableFuture&lt;Boolean&gt; isTableAvailable(TableName tableName, byte[][] splitKeys) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    Preconditions.checkNotNull(splitKeys, "splitKeys is null. If you don't specify splitKeys,"<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        + " use isTableAvailable(TableName) instead");<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    return isTableAvailable(tableName, Optional.of(splitKeys));<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>  private CompletableFuture&lt;Boolean&gt; isTableAvailable(TableName tableName,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      Optional&lt;byte[][]&gt; splitKeys) {<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      return connection.registry.getMetaRegionLocation().thenApply(locs -&gt; Stream<a name="line.653"></a>
+<span class="sourceLineNo">654</span>        .of(locs.getRegionLocations()).allMatch(loc -&gt; loc != null &amp;&amp; loc.getServerName() != null));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    }<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    CompletableFuture&lt;Boolean&gt; future = new CompletableFuture&lt;&gt;();<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    addListener(isTableEnabled(tableName), (enabled, error) -&gt; {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (error != null) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        future.completeExceptionally(error);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        return;<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      }<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      if (!enabled) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        future.complete(false);<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        addListener(<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName)),<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          (locations, error1) -&gt; {<a name="line.667"></a>
+<span class="sourceLineNo">668</span>            if (error1 != null) {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>              future.completeExceptionally(error1);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>              return;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>            }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>            List&lt;HRegionLocation&gt; notDeployedRegions = locations.stream()<a name="line.672"></a>
+<span class="sourceLineNo">673</span>              .filter(loc -&gt; loc.getServerName() == null).collect(Collectors.toList());<a name="line.673"></a>
+<span class="sourceLineNo">674</span>            if (notDeployedRegions.size() &gt; 0) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>              if (LOG.isDebugEnabled()) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>                LOG.debug("Table " + tableName + " has " + notDeployedRegions.size() + " regions");<a name="line.676"></a>
+<span class="sourceLineNo">677</span>              }<a name="line.677"></a>
+<span class="sourceLineNo">678</span>              future.complete(false);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>              return;<a name="line.679"></a>
+<span class="sourceLineNo">680</span>            }<a name="line.680"></a>
+<span class="sourceLineNo">681</span><a name="line.681"></a>
+<span class="sourceLineNo">682</span>            Optional&lt;Boolean&gt; available =<a name="line.682"></a>
+<span class="sourceLineNo">683</span>              splitKeys.map(keys -&gt; compareRegionsWithSplitKeys(locations, keys));<a name="line.683"></a>
+<span class="sourceLineNo">684</span>            future.complete(available.orElse(true));<a name="line.684"></a>
+<span class="sourceLineNo">685</span>          });<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    });<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    return future;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  private boolean compareRegionsWithSplitKeys(List&lt;HRegionLocation&gt; locations, byte[][] splitKeys) {<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    int regionCount = 0;<a name="line.692"></a>
+<span class="sourceLineNo">693</span>    for (HRegionLocation location : locations) {<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      RegionInfo info = location.getRegion();<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      if (Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.695"></a>
+<span class="sourceLineNo">696</span>        regionCount++;<a name="line.696"></a>
+<span class="sourceLineNo">697</span>        continue;<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      }<a name="line.698"></a>
+<span class="sourceLineNo">699</span>      for (byte[] splitKey : splitKeys) {<a name="line.699"></a>
+<span class="sourceLineNo">700</span>        // Just check if the splitkey is available<a name="line.700"></a>
+<span class="sourceLineNo">701</span>        if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.701"></a>
+<span class="sourceLineNo">702</span>          regionCount++;<a name="line.702"></a>
+<span class="sourceLineNo">703</span>          break;<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>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    return regionCount == splitKeys.length + 1;<a name="line.707"></a>
+<span class="sourceLineNo">708</span>  }<a name="line.708"></a>
+<span class="sourceLineNo">709</span><a name="line.709"></a>
+<span class="sourceLineNo">710</span>  @Override<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  public CompletableFuture&lt;Void&gt; addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily) {<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    return this.&lt;AddColumnRequest, AddColumnResponse&gt; procedureCall(<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      RequestConverter.buildAddColumnRequest(tableName, columnFamily, ng.getNonceGroup(),<a name="line.713"></a>
+<span class="sourceLineNo">714</span>        ng.newNonce()), (s, c, req, done) -&gt; s.addColumn(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.714"></a>
+<span class="sourceLineNo">715</span>      new AddColumnFamilyProcedureBiConsumer(tableName));<a name="line.715"></a>
+<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
+<span class="sourceLineNo">717</span><a name="line.717"></a>
+<span class="sourceLineNo">718</span>  @Override<a name="line.718"></a>
+<span class="sourceLineNo">719</span>  public CompletableFuture&lt;Void&gt; deleteColumnFamily(TableName tableName, byte[] columnFamily) {<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    return this.&lt;DeleteColumnRequest, DeleteColumnResponse&gt; procedureCall(<a name="line.720"></a>
+<span class="sourceLineNo">721</span>      RequestConverter.buildDeleteColumnRequest(tableName, columnFamily, ng.getNonceGroup(),<a name="line.721"></a>
+<span class="sourceLineNo">722</span>        ng.newNonce()), (s, c, req, done) -&gt; s.deleteColumn(c, req, done),<a name="line.722"></a>
+<span class="sourceLineNo">723</span>      (resp) -&gt; resp.getProcId(), new DeleteColumnFamilyProcedureBiConsumer(tableName));<a name="line.723"></a>
+<span class="sourceLineNo">724</span>  }<a name="line.724"></a>
+<span class="sourceLineNo">725</span><a name="line.725"></a>
+<span class="sourceLineNo">726</span>  @Override<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  public CompletableFuture&lt;Void&gt; modifyColumnFamily(TableName tableName,<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      ColumnFamilyDescriptor columnFamily) {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    return this.&lt;ModifyColumnRequest, ModifyColumnResponse&gt; procedureCall(<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      RequestConverter.buildModifyColumnRequest(tableName, columnFamily, ng.getNonceGroup(),<a name="line.730"></a>
+<span class="sourceLineNo">731</span>        ng.newNonce()), (s, c, req, done) -&gt; s.modifyColumn(c, req, done),<a name="line.731"></a>
+<span class="sourceLineNo">732</span>      (resp) -&gt; resp.getProcId(), new ModifyColumnFamilyProcedureBiConsumer(tableName));<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>  @Override<a name="line.735"></a>
+<span class="sourceLineNo">736</span>  public CompletableFuture&lt;Void&gt; createNamespace(NamespaceDescriptor descriptor) {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    return this.&lt;CreateNamespaceRequest, CreateNamespaceResponse&gt; procedureCall(<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      RequestConverter.buildCreateNamespaceRequest(descriptor),<a name="line.738"></a>
+<span class="sourceLineNo">739</span>      (s, c, req, done) -&gt; s.createNamespace(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      new CreateNamespaceProcedureBiConsumer(descriptor.getName()));<a name="line.740"></a>
+<span class="sourceLineNo">741</span>  }<a name="line.741"></a>
+<span class="sourceLineNo">742</span><a name="line.742"></a>
+<span class="sourceLineNo">743</span>  @Override<a name="line.743"></a>
+<span class="sourceLineNo">744</span>  public CompletableFuture&lt;Void&gt; modifyNamespace(NamespaceDescriptor descriptor) {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    return this.&lt;ModifyNamespaceRequest, ModifyNamespaceResponse&gt; procedureCall(<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      RequestConverter.buildModifyNamespaceRequest(descriptor),<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      (s, c, req, done) -&gt; s.modifyNamespace(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      new ModifyNamespaceProcedureBiConsumer(descriptor.getName()));<a name="line.748"></a>
+<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
+<span class="sourceLineNo">750</span><a name="line.750"></a>
+<span class="sourceLineNo">751</span>  @Override<a name="line.751"></a>
+<span class="sourceLineNo">752</span>  public CompletableFuture&lt;Void&gt; deleteNamespace(String name) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>    return this.&lt;DeleteNamespaceRequest, DeleteNamespaceResponse&gt; procedureCall(<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      RequestConverter.buildDeleteNamespaceRequest(name),<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      (s, c, req, done) -&gt; s.deleteNamespace(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      new DeleteNamespaceProcedureBiConsumer(name));<a name="line.756"></a>
+<span class="sourceLineNo">757</span>  }<a name="line.757"></a>
+<span class="sourceLineNo">758</span><a name="line.758"></a>
+<span class="sourceLineNo">759</span>  @Override<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  public CompletableFuture&lt;NamespaceDescriptor&gt; getNamespaceDescriptor(String name) {<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    return this<a name="line.761"></a>
+<span class="sourceLineNo">762</span>        .&lt;NamespaceDescriptor&gt; newMasterCaller()<a name="line.762"></a>
+<span class="sourceLineNo">763</span>        .action(<a name="line.763"></a>
+<span class="sourceLineNo">764</span>          (controller, stub) -&gt; this<a name="line.764"></a>
+<span class="sourceLineNo">765</span>              .&lt;GetNamespaceDescriptorRequest, GetNamespaceDescriptorResponse, NamespaceDescriptor&gt; call(<a name="line.765"></a>
+<span class="sourceLineNo">766</span>                controller, stub, RequestConverter.buildGetNamespaceDescriptorRequest(name), (s, c,<a name="line.766"></a>
+<span class="sourceLineNo">767</span>                    req, done) -&gt; s.getNamespaceDescriptor(c, req, done), (resp) -&gt; ProtobufUtil<a name="line.767"></a>
+<span class="sourceLineNo">768</span>                    .toNamespaceDescriptor(resp.getNamespaceDescriptor()))).call();<a name="line.768"></a>
+<span class="sourceLineNo">769</span>  }<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>  @Override<a name="line.771"></a>
+<span class="sourceLineNo">772</span>  public CompletableFuture&lt;List&lt;NamespaceDescriptor&gt;&gt; listNamespaceDescriptors() {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    return this<a name="line.773"></a>
+<span class="sourceLineNo">774</span>        .&lt;List&lt;NamespaceDescriptor&gt;&gt; newMasterCaller()<a name="line.774"></a>
+<span class="sourceLineNo">775</span>        .action(<a name="line.775"></a>
+<span class="sourceLineNo">776</span>          (controller, stub) -&gt; this<a name="line.776"></a>
+<span class="sourceLineNo">777</span>              .&lt;ListNamespaceDescriptorsRequest, ListNamespaceDescriptorsResponse, List&lt;NamespaceDescriptor&gt;&gt; call(<a name="line.777"></a>
+<span class="sourceLineNo">778</span>                controller, stub, ListNamespaceDescriptorsRequest.newBuilder().build(), (s, c, req,<a name="line.778"></a>
+<span class="sourceLineNo">779</span>                    done) -&gt; s.listNamespaceDescriptors(c, req, done), (resp) -&gt; ProtobufUtil<a name="line.779"></a>
+<span class="sourceLineNo">780</span>                    .toNamespaceDescriptorList(resp))).call();<a name="line.780"></a>
+<span class="sourceLineNo">781</span>  }<a name="line.781"></a>
+<span class="sourceLineNo">782</span><a name="line.782"></a>
+<span class="sourceLineNo">783</span>  @Override<a name="line.783"></a>
+<span class="sourceLineNo">784</span>  public CompletableFuture&lt;List&lt;RegionInfo&gt;&gt; getRegions(ServerName serverName) {<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    return this.&lt;List&lt;RegionInfo&gt;&gt; newAdminCaller()<a name="line.785"></a>
+<span class="sourceLineNo">786</span>        .action((controller, stub) -&gt; this<a name="line.786"></a>
+<span class="sourceLineNo">787</span>            .&lt;GetOnlineRegionRequest, GetOnlineRegionResponse, List&lt;RegionInfo&gt;&gt; adminCall(<a name="line.787"></a>
+<span class="sourceLineNo">788</span>              controller, stub, RequestConverter.buildGetOnlineRegionRequest(),<a name="line.788"></a>
+<span class="sourceLineNo">789</span>              (s, c, req, done) -&gt; s.getOnlineRegion(c, req, done),<a name="line.789"></a>
+<span class="sourceLineNo">790</span>              resp -&gt; ProtobufUtil.getRegionInfos(resp)))<a name="line.790"></a>
+<span class="sourceLineNo">791</span>        .serverName(serverName).call();<a name="line.791"></a>
+<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
+<span class="sourceLineNo">793</span><a name="line.793"></a>
+<span class="sourceLineNo">794</span>  @Override<a name="line.794"></a>
+<span class="sourceLineNo">795</span>  public CompletableFuture&lt;List&lt;RegionInfo&gt;&gt; getRegions(TableName tableName) {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    if (tableName.equals(META_TABLE_NAME)) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      return connection.getLocator().getRegionLocation(tableName, null, null, operationTimeoutNs)<a name="line.797"></a>
+<span class="sourceLineNo">798</span>          .thenApply(loc -&gt; Collections.singletonList(loc.getRegion()));<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    } else {<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      return AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName))<a name="line.800"></a>
+<span class="sourceLineNo">801</span>          .thenApply(<a name="line.801"></a>
+<span class="sourceLineNo">802</span>            locs -&gt; locs.stream().map(loc -&gt; loc.getRegion()).collect(Collectors.toList()));<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>  @Override<a name="line.806"></a>
+<span class="sourceLineNo">807</span>  public CompletableFuture&lt;Void&gt; flush(TableName tableName) {<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    addListener(tableExists(tableName), (exists, err) -&gt; {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      if (err != null) {<a name="line.810"></a>
+<span class="sourceLineNo">811</span>        future.completeExceptionally(err);<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      } else if (!exists) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>        future.completeExceptionally(new TableNotFoundException(tableName));<a name="line.813"></a>
+<span class="sourceLineNo">814</span>      } else {<a name="line.814"></a>
+<span class="sourceLineNo">815</span>        addListener(isTableEnabled(tableName), (tableEnabled, err2) -&gt; {<a name="line.815"></a>
+<span class="sourceLineNo">816</span>          if (err2 != null) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>            future.completeExceptionally(err2);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>          } else if (!tableEnabled) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>            future.completeExceptionally(new TableNotEnabledException(tableName));<a name="line.819"></a>
+<span class="sourceLineNo">820</span>          } else {<a name="line.820"></a>
+<span class="sourceLineNo">821</span>            addListener(execProcedure(FLUSH_TABLE_PROCEDURE_SIGNATURE, tableName.getNameAsString(),<a name="line.821"></a>
+<span class="sourceLineNo">822</span>              new HashMap&lt;&gt;()), (ret, err3) -&gt; {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>                if (err3 != null) {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>                  future.completeExceptionally(err3);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>                } else {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>                  future.complete(ret);<a name="line.826"></a>
+<span class="sourceLineNo">827</span>                }<a name="line.827"></a>
+<span class="sourceLineNo">828</span>              });<a name="line.828"></a>
+<span class="sourceLineNo">829</span>          }<a name="line.829"></a>
+<span class="sourceLineNo">830</span>        });<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      }<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    });<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    return future;<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>  @Override<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  public CompletableFuture&lt;Void&gt; flushRegion(byte[] regionName) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.838"></a>
+<span class="sourceLineNo">839</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      if (err != null) {<a name="line.840"></a>
+<span class="sourceLineNo">841</span>        future.completeExceptionally(err);<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        return;<a name="line.842"></a>
+<span class="sourceLineNo">843</span>      }<a name="line.843"></a>
+<span class="sourceLineNo">844</span>      ServerName serverName = location.getServerName();<a name="line.844"></a>
+<span class="sourceLineNo">845</span>      if (serverName == null) {<a name="line.845"></a>
+<span class="sourceLineNo">846</span>        future<a name="line.846"></a>
+<span class="sourceLineNo">847</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        return;<a name="line.848"></a>
+<span class="sourceLineNo">849</span>      }<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      addListener(flush(serverName, location.getRegion()), (ret, err2) -&gt; {<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        if (err2 != null) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span>          future.completeExceptionally(err2);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>        } else {<a name="line.853"></a>
+<span class="sourceLineNo">854</span>          future.complete(ret);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>        }<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>    return future;<a name="line.858"></a>
+<span class="sourceLineNo">859</span>  }<a name="line.859"></a>
+<span class="sourceLineNo">860</span><a name="line.860"></a>
+<span class="sourceLineNo">861</span>  private CompletableFuture&lt;Void&gt; flush(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    return this.&lt;Void&gt; newAdminCaller()<a name="line.862"></a>
+<span class="sourceLineNo">863</span>            .serverName(serverName)<a name="line.863"></a>
+<span class="sourceLineNo">864</span>            .action(<a name="line.864"></a>
+<span class="sourceLineNo">865</span>              (controller, stub) -&gt; this.&lt;FlushRegionRequest, FlushRegionResponse, Void&gt; adminCall(<a name="line.865"></a>
+<span class="sourceLineNo">866</span>                controller, stub, RequestConverter.buildFlushRegionRequest(regionInfo<a name="line.866"></a>
+<span class="sourceLineNo">867</span>                  .getRegionName()), (s, c, req, done) -&gt; s.flushRegion(c, req, done),<a name="line.867"></a>
+<span class="sourceLineNo">868</span>                resp -&gt; null))<a name="line.868"></a>
+<span class="sourceLineNo">869</span>            .call();<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>  @Override<a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public CompletableFuture&lt;Void&gt; flushRegionServer(ServerName sn) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    addListener(getRegions(sn), (hRegionInfos, err) -&gt; {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      if (err != null) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        future.completeExceptionally(err);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>        return;<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      }<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      List&lt;CompletableFuture&lt;Void&gt;&gt; compactFutures = new ArrayList&lt;&gt;();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      if (hRegionInfos != null) {<a name="line.881"></a>
+<span class="sourceLineNo">882</span>        hRegionInfos.forEach(region -&gt; compactFutures.add(flush(sn, region)));<a name="line.882"></a>
+<span class="sourceLineNo">883</span>      }<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      addListener(CompletableFuture.allOf(<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        compactFutures.toArray(new CompletableFuture&lt;?&gt;[compactFutures.size()])), (ret, err2) -&gt; {<a name="line.885"></a>
+<span class="sourceLineNo">886</span>          if (err2 != null) {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>            future.completeExceptionally(err2);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>          } else {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>            future.complete(ret);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>          }<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        });<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    });<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    return future;<a name="line.893"></a>
 <span class="sourceLineNo">894</span>  }<a name="line.894"></a>
 <span class="sourceLineNo">895</span><a name="line.895"></a>
 <span class="sourceLineNo">896</span>  @Override<a name="line.896"></a>
-<span class="sourceLineNo">897</span>  public CompletableFuture&lt;Void&gt; compactRegion(byte[] regionName) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    return compactRegion(regionName, null, false);<a name="line.898"></a>
+<span class="sourceLineNo">897</span>  public CompletableFuture&lt;Void&gt; compact(TableName tableName, CompactType compactType) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    return compact(tableName, null, false, compactType);<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>  @Override<a name="line.901"></a>
-<span class="sourceLineNo">902</span>  public CompletableFuture&lt;Void&gt; compactRegion(byte[] regionName, byte[] columnFamily) {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null."<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        + " If you don't specify a columnFamily, use compactRegion(regionName) instead");<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return compactRegion(regionName, columnFamily, false);<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>  @Override<a name="line.908"></a>
-<span class="sourceLineNo">909</span>  public CompletableFuture&lt;Void&gt; majorCompact(TableName tableName, CompactType compactType) {<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    return compact(tableName, null, true, compactType);<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>  @Override<a name="line.913"></a>
-<span class="sourceLineNo">914</span>  public CompletableFuture&lt;Void&gt; majorCompact(TableName tableName, byte[] columnFamily,<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      CompactType compactType) {<a name="line.915"></a>
+<span class="sourceLineNo">902</span>  public CompletableFuture&lt;Void&gt; compact(TableName tableName, byte[] columnFamily,<a name="line.902"></a>
+<span class="sourceLineNo">903</span>      CompactType compactType) {<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null. "<a name="line.904"></a>
+<span class="sourceLineNo">905</span>        + "If you don't specify a columnFamily, use compact(TableName) instead");<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    return compact(tableName, columnFamily, false, compactType);<a name="line.906"></a>
+<span class="sourceLineNo">907</span>  }<a name="line.907"></a>
+<span class="sourceLineNo">908</span><a name="line.908"></a>
+<span class="sourceLineNo">909</span>  @Override<a name="line.909"></a>
+<span class="sourceLineNo">910</span>  public CompletableFuture&lt;Void&gt; compactRegion(byte[] regionName) {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>    return compactRegion(regionName, null, false);<a name="line.911"></a>
+<span class="sourceLineNo">912</span>  }<a name="line.912"></a>
+<span class="sourceLineNo">913</span><a name="line.913"></a>
+<span class="sourceLineNo">914</span>  @Override<a name="line.914"></a>
+<span class="sourceLineNo">915</span>  public CompletableFuture&lt;Void&gt; compactRegion(byte[] regionName, byte[] columnFamily) {<a name="line.915"></a>
 <span class="sourceLineNo">916</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null."<a name="line.916"></a>
-<span class="sourceLineNo">917</span>        + "If you don't specify a columnFamily, use compact(TableName) instead");<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    return compact(tableName, columnFamily, true, compactType);<a name="line.918"></a>
+<span class="sourceLineNo">917</span>        + " If you don't specify a columnFamily, use compactRegion(regionName) instead");<a name="line.917"></a>
+<span class="sourceLineNo">918</span>    return compactRegion(regionName, columnFamily, false);<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>  @Override<a name="line.921"></a>
-<span class="sourceLineNo">922</span>  public CompletableFuture&lt;Void&gt; majorCompactRegion(byte[] regionName) {<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    return compactRegion(regionName, null, true);<a name="line.923"></a>
+<span class="sourceLineNo">922</span>  public CompletableFuture&lt;Void&gt; majorCompact(TableName tableName, CompactType compactType) {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>    return compact(tableName, null, true, compactType);<a name="line.923"></a>
 <span class="sourceLineNo">924</span>  }<a name="line.924"></a>
 <span class="sourceLineNo">925</span><a name="line.925"></a>
 <span class="sourceLineNo">926</span>  @Override<a name="line.926"></a>
-<span class="sourceLineNo">927</span>  public CompletableFuture&lt;Void&gt; majorCompactRegion(byte[] regionName, byte[] columnFamily) {<a name="line.927"></a>
-<span class="sourceLineNo">928</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null."<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        + " If you don't specify a columnFamily, use majorCompactRegion(regionName) instead");<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    return compactRegion(regionName, columnFamily, true);<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>  @Override<a name="line.933"></a>
-<span class="sourceLineNo">934</span>  public CompletableFuture&lt;Void&gt; compactRegionServer(ServerName sn) {<a name="line.934"></a>
-<span class="sourceLineNo">935</span>    return compactRegionServer(sn, false);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>  }<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>  @Override<a name="line.938"></a>
-<span class="sourceLineNo">939</span>  public CompletableFuture&lt;Void&gt; majorCompactRegionServer(ServerName sn) {<a name="line.939"></a>
-<span class="sourceLineNo">940</span>    return compactRegionServer(sn, true);<a name="line.940"></a>
-<span class="sourceLineNo">941</span>  }<a name="line.941"></a>
-<span class="sourceLineNo">942</span><a name="line.942"></a>
-<span class="sourceLineNo">943</span>  private CompletableFuture&lt;Void&gt; compactRegionServer(ServerName sn, boolean major) {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    addListener(getRegions(sn), (hRegionInfos, err) -&gt; {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      if (err != null) {<a name="line.946"></a>
-<span class="sourceLineNo">947</span>        future.completeExceptionally(err);<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        return;<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      }<a name="line.949"></a>
-<span class="sourceLineNo">950</span>      List&lt;CompletableFuture&lt;Void&gt;&gt; compactFutures = new ArrayList&lt;&gt;();<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      if (hRegionInfos != null) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>        hRegionInfos.forEach(region -&gt; compactFutures.add(compact(sn, region, major, null)));<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      addListener(CompletableFuture.allOf(<a name="line.954"></a>
-<span class="sourceLineNo">955</span>        compactFutures.toArray(new CompletableFuture&lt;?&gt;[compactFutures.size()])), (ret, err2) -&gt; {<a name="line.955"></a>
-<span class="sourceLineNo">956</span>          if (err2 != null) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>            future.completeExceptionally(err2);<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          } else {<a name="line.958"></a>
-<span class="sourceLineNo">959</span>            future.complete(ret);<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>    });<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    return future;<a name="line.963"></a>
-<span class="sourceLineNo">964</span>  }<a name="line.964"></a>
-<span class="sourceLineNo">965</span><a name="line.965"></a>
-<span class="sourceLineNo">966</span>  private CompletableFuture&lt;Void&gt; compactRegion(byte[] regionName, byte[] columnFamily,<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      boolean major) {<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      if (err != null) {<a name="line.970"></a>
-<span class="sourceLineNo">971</span>        future.completeExceptionally(err);<a name="line.971"></a>
-<span class="sourceLineNo">972</span>        return;<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      }<a name="line.973"></a>
-<span class="sourceLineNo">974</span>      ServerName serverName = location.getServerName();<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      if (serverName == null) {<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        future<a name="line.976"></a>
-<span class="sourceLineNo">977</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.977"></a>
-<span class="sourceLineNo">978</span>        return;<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      }<a name="line.979"></a>
-<span class="sourceLineNo">980</span>      addListener(compact(location.getServerName(), location.getRegion(), major, columnFamily),<a name="line.980"></a>
-<span class="sourceLineNo">981</span>        (ret, err2) -&gt; {<a name="line.981"></a>
-<span class="sourceLineNo">982</span>          if (err2 != null) {<a name="line.982"></a>
-<span class="sourceLineNo">983</span>            future.completeExceptionally(err2);<a name="line.983"></a>
-<span class="sourceLineNo">984</span>          } else {<a name="line.984"></a>
-<span class="sourceLineNo">985</span>            future.complete(ret);<a name="line.985"></a>
-<span class="sourceLineNo">986</span>          }<a name="line.986"></a>
-<span class="sourceLineNo">987</span>        });<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    });<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return future;<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>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * List all region locations for the specific table.<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   */<a name="line.994"></a>
-<span class="sourceLineNo">995</span>  private CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; getTableHRegionLocations(TableName tableName) {<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    if (TableName.META_TABLE_NAME.equals(tableName)) {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.997"></a>
-<span class="sourceLineNo">998</span>      // For meta table, we use zk to fetch all locations.<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      AsyncRegistry registry = AsyncRegistryFactory.getRegistry(connection.getConfiguration());<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      addListener(registry.getMetaRegionLocation(), (metaRegions, err) -&gt; {<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>        if (err != null) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>          future.completeExceptionally(err);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>        } else if (metaRegions == null || metaRegions.isEmpty() ||<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>          metaRegions.getDefaultRegionLocation() == null) {<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>          future.completeExceptionally(new IOException("meta region does not found"));<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>        } else {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>          future.complete(Collections.singletonList(metaRegions.getDefaultRegionLocation()));<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>        }<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        // close the registry.<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        IOUtils.closeQuietly(registry);<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      });<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      return future;<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    } else {<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      // For non-meta table, we fetch all locations by scanning hbase:meta table<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      return AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName));<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>    }<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>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * Compact column family of a table, Asynchronous operation even if CompletableFuture.get()<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  private CompletableFuture&lt;Void&gt; compact(TableName tableName, byte[] columnFamily, boolean major,<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>      CompactType compactType) {<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span><a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    switch (compactType) {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>      case MOB:<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>        addListener(connection.registry.getMasterAddress(), (serverName, err) -&gt; {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>          if (err != null) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>            future.completeExceptionally(err);<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>            return;<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          }<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>          RegionInfo regionInfo = RegionInfo.createMobRegionInfo(tableName);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>          addListener(compact(serverName, regionInfo, major, columnFamily), (ret, err2) -&gt; {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            if (err2 != null) {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>              future.completeExceptionally(err2);<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>            } else {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>              future.complete(ret);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>            }<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>          });<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>        });<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>        break;<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      case NORMAL:<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        addListener(getTableHRegionLocations(tableName), (locations, err) -&gt; {<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>          if (err != null) {<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            future.completeExceptionally(err);<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            return;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          }<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          CompletableFuture&lt;?&gt;[] compactFutures =<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            locations.stream().filter(l -&gt; l.getRegion() != null)<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>              .filter(l -&gt; !l.getRegion().isOffline()).filter(l -&gt; l.getServerName() != null)<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              .map(l -&gt; compact(l.getServerName(), l.getRegion(), major, columnFamily))<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>              .toArray(CompletableFuture&lt;?&gt;[]::new);<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>          // future complete unless all of the compact futures are completed.<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>          addListener(CompletableFuture.allOf(compactFutures), (ret, err2) -&gt; {<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>            if (err2 != null) {<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>              future.completeExceptionally(err2);<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>            } else {<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>              future.complete(ret);<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>        break;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>      default:<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>        throw new IllegalArgumentException("Unknown compactType: " + compactType);<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>    }<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    return future;<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>  }<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>   * Compact the region at specific region server.<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>   */<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>  private CompletableFuture&lt;Void&gt; compact(final ServerName sn, final RegionInfo hri,<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      final boolean major, byte[] columnFamily) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>    return this<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>        .&lt;Void&gt; newAdminCaller()<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>        .serverName(sn)<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>        .action(<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>          (controller, stub) -&gt; this.&lt;CompactRegionRequest, CompactRegionResponse, Void&gt; adminCall(<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>            controller, stub, RequestConverter.buildCompactRegionRequest(hri.getRegionName(),<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>              major, columnFamily), (s, c, req, done) -&gt; s.compactRegion(c, req, done),<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>            resp -&gt; null)).call();<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>  }<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span><a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>  private byte[] toEncodeRegionName(byte[] regionName) {<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    try {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      return RegionInfo.isEncodedRegionName(regionName) ? regionName<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>          : Bytes.toBytes(RegionInfo.encodeRegionName(regionName));<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>    } catch (IOException e) {<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>      return regionName;<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><a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>  private void checkAndGetTableName(byte[] encodeRegionName, AtomicReference&lt;TableName&gt; tableName,<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>      CompletableFuture&lt;TableName&gt; result) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>    addListener(getRegionLocation(encodeRegionName), (location, err) -&gt; {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      if (err != null) {<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>        result.completeExceptionally(err);<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>        return;<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>      RegionInfo regionInfo = location.getRegion();<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>        result.completeExceptionally(<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>          new IllegalArgumentException("Can't invoke merge on non-default regions directly"));<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>        return;<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      }<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      if (!tableName.compareAndSet(null, regionInfo.getTable())) {<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>        if (!tableName.get().equals(regionInfo.getTable())) {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>          // tables of this two region should be same.<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>          result.completeExceptionally(<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            new IllegalArgumentException("Cannot merge regions from two different tables " +<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>              tableName.get() + " and " + regionInfo.getTable()));<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>        } else {<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>          result.complete(tableName.get());<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>        }<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>  }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  private CompletableFuture&lt;TableName&gt; checkRegionsAndGetTableName(byte[] encodeRegionNameA,<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>      byte[] encodeRegionNameB) {<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>    AtomicReference&lt;TableName&gt; tableNameRef = new AtomicReference&lt;&gt;();<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    CompletableFuture&lt;TableName&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span><a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>    checkAndGetTableName(encodeRegionNameA, tableNameRef, future);<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>    checkAndGetTableName(encodeRegionNameB, tableNameRef, future);<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>    return future;<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>  }<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span><a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>  @Override<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  public CompletableFuture&lt;Boolean&gt; mergeSwitch(boolean on) {<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    return setSplitOrMergeOn(on, MasterSwitchType.MERGE);<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>  @Override<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>  public CompletableFuture&lt;Boolean&gt; isMergeEnabled() {<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>    return isSplitOrMergeOn(MasterSwitchType.MERGE);<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>  @Override<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>  public CompletableFuture&lt;Boolean&gt; splitSwitch(boolean on) {<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>    return setSplitOrMergeOn(on, MasterSwitchType.SPLIT);<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>  }<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span><a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>  @Override<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>  public CompletableFuture&lt;Boolean&gt; isSplitEnabled() {<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    return isSplitOrMergeOn(MasterSwitchType.SPLIT);<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>  private CompletableFuture&lt;Boolean&gt; setSplitOrMergeOn(boolean on, MasterSwitchType switchType) {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>    SetSplitOrMergeEnabledRequest request =<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>        RequestConverter.buildSetSplitOrMergeEnabledRequest(on, false, switchType);<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>    return this<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>        .&lt;Boolean&gt; newMasterCaller()<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>        .action(<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>          (controller, stub) -&gt; this<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>              .&lt;SetSplitOrMergeEnabledRequest, SetSplitOrMergeEnabledResponse, Boolean&gt; call(<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>                controller, stub, request, (s, c, req, done) -&gt; s.setSplitOrMergeEnabled(c, req,<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>                  done), (resp) -&gt; resp.getPrevValueList().get(0))).call();<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>  private CompletableFuture&lt;Boolean&gt; isSplitOrMergeOn(MasterSwitchType switchType) {<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>    IsSplitOrMergeEnabledRequest request =<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>        RequestConverter.buildIsSplitOrMergeEnabledRequest(switchType);<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>    return this<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>        .&lt;Boolean&gt; newMasterCaller()<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>        .action(<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>          (controller, stub) -&gt; this<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>              .&lt;IsSplitOrMergeEnabledRequest, IsSplitOrMergeEnabledResponse, Boolean&gt; call(<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>                controller, stub, request,<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>                (s, c, req, done) -&gt; s.isSplitOrMergeEnabled(c, req, done),<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>                (resp) -&gt; resp.getEnabled())).call();<a name="line.1172"></a>
+<span class="sourceLineNo">927</span>  public CompletableFuture&lt;Void&gt; majorCompact(TableName tableName, byte[] columnFamily,<a name="line.927"></a>
+<span class="sourceLineNo">928</span>      CompactType compactType) {<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null."<a name="line.929"></a>
+<span class="sourceLineNo">930</span>        + "If you don't specify a columnFamily, use compact(TableName) instead");<a name="line.930"></a>
+<span class="sourceLineNo">931</span>    return compact(tableName, columnFamily, true, compactType);<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>  @Override<a name="line.934"></a>
+<span class="sourceLineNo">935</span>  public CompletableFuture&lt;Void&gt; majorCompactRegion(byte[] regionName) {<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    return compactRegion(regionName, null, true);<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>  @Override<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  public CompletableFuture&lt;Void&gt; majorCompactRegion(byte[] regionName, byte[] columnFamily) {<a name="line.940"></a>
+<span class="sourceLineNo">941</span>    Preconditions.checkNotNull(columnFamily, "columnFamily is null."<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        + " If you don't specify a columnFamily, use majorCompactRegion(regionName) instead");<a name="line.942"></a>
+<span class="sourceLineNo">943</span>    return compactRegion(regionName, columnFamily, true);<a name="line.943"></a>
+<span class="sourceLineNo">944</span>  }<a name="line.944"></a>
+<span class="sourceLineNo">945</span><a name="line.945"></a>
+<span class="sourceLineNo">946</span>  @Override<a name="line.946"></a>
+<span class="sourceLineNo">947</span>  public CompletableFuture&lt;Void&gt; compactRegionServer(ServerName sn) {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>    return compactRegionServer(sn, false);<a name="line.948"></a>
+<span class="sourceLineNo">949</span>  }<a name="line.949"></a>
+<span class="sourceLineNo">950</span><a name="line.950"></a>
+<span class="sourceLineNo">951</span>  @Override<a name="line.951"></a>
+<span class="sourceLineNo">952</span>  public CompletableFuture&lt;Void&gt; majorCompactRegionServer(ServerName sn) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>    return compactRegionServer(sn, true);<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>  private CompletableFuture&lt;Void&gt; compactRegionServer(ServerName sn, boolean major) {<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    addListener(getRegions(sn), (hRegionInfos, err) -&gt; {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>      if (err != null) {<a name="line.959"></a>
+<span class="sourceLineNo">960</span>        future.completeExceptionally(err);<a name="line.960"></a>
+<span class="sourceLineNo">961</span>        return;<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      }<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      List&lt;CompletableFuture&lt;Void&gt;&gt; compactFutures = new ArrayList&lt;&gt;();<a name="line.963"></a>
+<span class="sourceLineNo">964</span>      if (hRegionInfos != null) {<a name="line.964"></a>
+<span class="sourceLineNo">965</span>        hRegionInfos.forEach(region -&gt; compactFutures.add(compact(sn, region, major, null)));<a name="line.965"></a>
+<span class="sourceLineNo">966</span>      }<a name="line.966"></a>
+<span class="sourceLineNo">967</span>      addListener(CompletableFuture.allOf(<a name="line.967"></a>
+<span class="sourceLineNo">968</span>        compactFutures.toArray(new CompletableFuture&lt;?&gt;[compactFutures.size()])), (ret, err2) -&gt; {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>          if (err2 != null) {<a name="line.969"></a>
+<span class="sourceLineNo">970</span>            future.completeExceptionally(err2);<a name="line.970"></a>
+<span class="sourceLineNo">971</span>          } else {<a name="line.971"></a>
+<span class="sourceLineNo">972</span>            future.complete(ret);<a name="line.972"></a>
+<span class="sourceLineNo">973</span>          }<a name="line.973"></a>
+<span class="sourceLineNo">974</span>        });<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    });<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    return future;<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  }<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span>  private CompletableFuture&lt;Void&gt; compactRegion(byte[] regionName, byte[] columnFamily,<a name="line.979"></a>
+<span class="sourceLineNo">980</span>      boolean major) {<a name="line.980"></a>
+<span class="sourceLineNo">981</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>      if (err != null) {<a name="line.983"></a>
+<span class="sourceLineNo">984</span>        future.completeExceptionally(err);<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        return;<a name="line.985"></a>
+<span class="sourceLineNo">986</span>      }<a name="line.986"></a>
+<span class="sourceLineNo">987</span>      ServerName serverName = location.getServerName();<a name="line.987"></a>
+<span class="sourceLineNo">988</span>      if (serverName == null) {<a name="line.988"></a>
+<span class="sourceLineNo">989</span>        future<a name="line.989"></a>
+<span class="sourceLineNo">990</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.990"></a>
+<span class="sourceLineNo">991</span>        return;<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      }<a name="line.992"></a>
+<span class="sourceLineNo">993</span>      addListener(compact(location.getServerName(), location.getRegion(), major, columnFamily),<a name="line.993"></a>
+<span class="sourceLineNo">994</span>        (ret, err2) -&gt; {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>          if (err2 != null) {<a name="line.995"></a>
+<span class="sourceLineNo">996</span>            future.completeExceptionally(err2);<a name="line.996"></a>
+<span class="sourceLineNo">997</span>          } else {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>            future.complete(ret);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>          }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>        });<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>    });<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>    return future;<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span><a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>  /**<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   * List all region locations for the specific table.<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>   */<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>  private CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; getTableHRegionLocations(TableName tableName) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    if (TableName.META_TABLE_NAME.equals(tableName)) {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>      CompletableFuture&lt;List&lt;HRegionLocation&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      // For meta table, we use zk to fetch all locations.<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      AsyncRegistry registry = AsyncRegistryFactory.getRegistry(connection.getConfiguration());<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>      addListener(registry.getMetaRegionLocation(), (metaRegions, err) -&gt; {<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        if (err != null) {<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>          future.completeExceptionally(err);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>        } else if (metaRegions == null || metaRegions.isEmpty() ||<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>          metaRegions.getDefaultRegionLocation() == null) {<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>          future.completeExceptionally(new IOException("meta region does not found"));<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>        } else {<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>          future.complete(Collections.singletonList(metaRegions.getDefaultRegionLocation()));<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>        }<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>        // close the registry.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>        IOUtils.closeQuietly(registry);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>      });<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      return future;<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    } else {<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>      // For non-meta table, we fetch all locations by scanning hbase:meta table<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>      return AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName));<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    }<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>  /**<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   * Compact column family of a table, Asynchronous operation even if CompletableFuture.get()<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>   */<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>  private CompletableFuture&lt;Void&gt; compact(TableName tableName, byte[] columnFamily, boolean major,<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      CompactType compactType) {<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span><a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>    switch (compactType) {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>      case MOB:<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        addListener(connection.registry.getMasterAddress(), (serverName, err) -&gt; {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          if (err != null) {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>            future.completeExceptionally(err);<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>            return;<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>          RegionInfo regionInfo = RegionInfo.createMobRegionInfo(tableName);<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>          addListener(compact(serverName, regionInfo, major, columnFamily), (ret, err2) -&gt; {<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>            if (err2 != null) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>              future.completeExceptionally(err2);<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>            } else {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>              future.complete(ret);<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>        break;<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>      case NORMAL:<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>        addListener(getTableHRegionLocations(tableName), (locations, err) -&gt; {<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>          if (err != null) {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>            future.completeExceptionally(err);<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>            return;<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>          }<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>          CompletableFuture&lt;?&gt;[] compactFutures =<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>            locations.stream().filter(l -&gt; l.getRegion() != null)<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>              .filter(l -&gt; !l.getRegion().isOffline()).filter(l -&gt; l.getServerName() != null)<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>              .map(l -&gt; compact(l.getServerName(), l.getRegion(), major, columnFamily))<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>              .toArray(CompletableFuture&lt;?&gt;[]::new);<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>          // future complete unless all of the compact futures are completed.<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>          addListener(CompletableFuture.allOf(compactFutures), (ret, err2) -&gt; {<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>            if (err2 != null) {<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>              future.completeExceptionally(err2);<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>            } else {<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>              future.complete(ret);<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>        break;<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>      default:<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        throw new IllegalArgumentException("Unknown compactType: " + compactType);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>    }<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>    return future;<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>  /**<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>   * Compact the region at specific region server.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>   */<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>  private CompletableFuture&lt;Void&gt; compact(final ServerName sn, final RegionInfo hri,<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      final boolean major, byte[] columnFamily) {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>    return this<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>        .&lt;Void&gt; newAdminCaller()<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>        .serverName(sn)<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>        .action(<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>          (controller, stub) -&gt; this.&lt;CompactRegionRequest, CompactRegionResponse, Void&gt; adminCall(<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>            controller, stub, RequestConverter.buildCompactRegionRequest(hri.getRegionName(),<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>              major, columnFamily), (s, c, req, done) -&gt; s.compactRegion(c, req, done),<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>            resp -&gt; null)).call();<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>  private byte[] toEncodeRegionName(byte[] regionName) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>    try {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>      return RegionInfo.isEncodedRegionName(regionName) ? regionName<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>          : Bytes.toBytes(RegionInfo.encodeRegionName(regionName));<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    } catch (IOException e) {<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>      return regionName;<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>    }<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>  }<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span><a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>  private void checkAndGetTableName(byte[] encodeRegionName, AtomicReference&lt;TableName&gt; tableName,<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>      CompletableFuture&lt;TableName&gt; result) {<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>    addListener(getRegionLocation(encodeRegionName), (location, err) -&gt; {<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>      if (err != null) {<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>        result.completeExceptionally(err);<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>        return;<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>      }<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>      RegionInfo regionInfo = location.getRegion();<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>      if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>        result.completeExceptionally(<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>          new IllegalArgumentException("Can't invoke merge on non-default regions directly"));<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>        return;<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>      }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>      if (!tableName.compareAndSet(null, regionInfo.getTable())) {<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>        if (!tableName.get().equals(regionInfo.getTable())) {<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>          // tables of this two region should be same.<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>          result.completeExceptionally(<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>            new IllegalArgumentException("Cannot merge regions from two different tables " +<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>              tableName.get() + " and " + regionInfo.getTable()));<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>        } else {<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>          result.complete(tableName.get());<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>        }<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>  }<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span><a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>  private CompletableFuture&lt;TableName&gt; checkRegionsAndGetTableName(byte[] encodeRegionNameA,<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      byte[] encodeRegionNameB) {<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>    AtomicReference&lt;TableName&gt; tableNameRef = new AtomicReference&lt;&gt;();<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>    CompletableFuture&lt;TableName&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span><a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>    checkAndGetTableName(encodeRegionNameA, tableNameRef, future);<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>    checkAndGetTableName(encodeRegionNameB, tableNameRef, future);<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    return future;<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>  @Override<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>  public CompletableFuture&lt;Boolean&gt; mergeSwitch(boolean on) {<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>    return setSplitOrMergeOn(on, MasterSwitchType.MERGE);<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>  }<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span><a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>  @Override<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>  public CompletableFuture&lt;Boolean&gt; isMergeEnabled() {<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>    return isSplitOrMergeOn(MasterSwitchType.MERGE);<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>  }<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span><a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>  @Override<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>  public CompletableFuture&lt;Boolean&gt; splitSwitch(boolean on) {<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>    return setSplitOrMergeOn(on, MasterSwitchType.SPLIT);<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>  }<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span><a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>  @Override<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>  public CompletableFuture&lt;Boolean&gt; isSplitEnabled() {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>    return isSplitOrMergeOn(MasterSwitchType.SPLIT);<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>  }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span><a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>  private CompletableFuture&lt;Boolean&gt; setSplitOrMergeOn(boolean on, MasterSwitchType switchType) {<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    SetSplitOrMergeEnabledRequest request =<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>        RequestConverter.buildSetSplitOrMergeEnabledRequest(on, false, switchType);<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>    return this<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>        .&lt;Boolean&gt; newMasterCaller()<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>        .action(<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span>          (controller, stub) -&gt; this<a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>              .&lt;SetSplitOrMergeEnabledRequest, SetSplitOrMergeEnabledResponse, Boolean&gt; call(<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>                controller, stub, request, (s, c, req, done) -&gt; s.setSplitOrMergeEnabled(c, req,<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>                  done), (resp) -&gt; resp.getPrevValueList().get(0))).call();<a name="line.1172"></a>
 <span class="sourceLineNo">1173</span>  }<a name="line.1173"></a>
 <span class="sourceLineNo">1174</span><a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>  @Override<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  public CompletableFuture&lt;Void&gt; mergeRegions(byte[] nameOfRegionA, byte[] nameOfRegionB,<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>      boolean forcible) {<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>    final byte[] encodeRegionNameA = toEncodeRegionName(nameOfRegionA);<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>    final byte[] encodeRegionNameB = toEncodeRegionName(nameOfRegionB);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span><a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>    addListener(checkRegionsAndGetTableName(encodeRegionNameA, encodeRegionNameB),<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>      (tableName, err) -&gt; {<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        if (err != null) {<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>          future.completeExceptionally(err);<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>          return;<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>        MergeTableRegionsRequest request = null;<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>        try {<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>          request = RequestConverter.buildMergeTableRegionsRequest(<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>            new byte[][] { encodeRegionNameA, encodeRegionNameB }, forcible, ng.getNonceGroup(),<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>            ng.newNonce());<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>        } catch (DeserializationException e) {<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>          future.completeExceptionally(e);<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>          return;<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>        }<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span><a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        addListener(<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>          this.&lt;MergeTableRegionsRequest, MergeTableRegionsResponse&gt; procedureCall(request,<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>            (s, c, req, done) -&gt; s.mergeTableRegions(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>            new MergeTableRegionProcedureBiConsumer(tableName)),<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          (ret, err2) -&gt; {<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>            if (err2 != null) {<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>              future.completeExceptionally(err2);<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>            } else {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>              future.complete(ret);<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>            }<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          });<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>      });<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>    return future;<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>  @Override<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>  public CompletableFuture&lt;Void&gt; split(TableName tableName) {<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    addListener(tableExists(tableName), (exist, error) -&gt; {<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>      if (error != null) {<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>        future.completeExceptionally(error);<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>        return;<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>      }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>      if (!exist) {<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>        future.completeExceptionally(new TableNotFoundException(tableName));<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>        return;<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>      }<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>      addListener(<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>        metaTable<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>          .scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY)<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>            .withStartRow(MetaTableAccessor.getTableStartRowForMeta(tableName, QueryType.REGION))<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>            .withStopRow(MetaTableAccessor.getTableStopRowForMeta(tableName, QueryType.REGION))),<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>        (results, err2) -&gt; {<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>          if (err2 != null) {<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>            future.completeExceptionally(err2);<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>            return;<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>          }<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>          if (results != null &amp;&amp; !results.isEmpty()) {<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>            List&lt;CompletableFuture&lt;Void&gt;&gt; splitFutures = new ArrayList&lt;&gt;();<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>            for (Result r : results) {<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>              if (r.isEmpty() || MetaTableAccessor.getRegionInfo(r) == null) {<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>                continue;<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>              }<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>              RegionLocations rl = MetaTableAccessor.getRegionLocations(r);<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>              if (rl != null) {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>                for (HRegionLocation h : rl.getRegionLocations()) {<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>                  if (h != null &amp;&amp; h.getServerName() != null) {<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>                    RegionInfo hri = h.getRegion();<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>                    if (hri == null || hri.isSplitParent() ||<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>                      hri.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>                      continue;<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>                    }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>                    splitFutures.add(split(hri, null));<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>                  }<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>                }<a name="line.1253"></a>
+<span class="sourceLineNo">1175</span>  private CompletableFuture&lt;Boolean&gt; isSplitOrMergeOn(MasterSwitchType switchType) {<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>    IsSplitOrMergeEnabledRequest request =<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>        RequestConverter.buildIsSplitOrMergeEnabledRequest(switchType);<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>    return this<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>        .&lt;Boolean&gt; newMasterCaller()<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>        .action(<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>          (controller, stub) -&gt; this<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>              .&lt;IsSplitOrMergeEnabledRequest, IsSplitOrMergeEnabledResponse, Boolean&gt; call(<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>                controller, stub, request,<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>                (s, c, req, done) -&gt; s.isSplitOrMergeEnabled(c, req, done),<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>                (resp) -&gt; resp.getEnabled())).call();<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>  }<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span><a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>  @Override<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span>  public CompletableFuture&lt;Void&gt; mergeRegions(byte[] nameOfRegionA, byte[] nameOfRegionB,<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>      boolean forcible) {<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span>    final byte[] encodeRegionNameA = toEncodeRegionName(nameOfRegionA);<a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>    final byte[] encodeRegionNameB = toEncodeRegionName(nameOfRegionB);<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span><a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>    addListener(checkRegionsAndGetTableName(encodeRegionNameA, encodeRegionNameB),<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>      (tableName, err) -&gt; {<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>        if (err != null) {<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>          future.completeExceptionally(err);<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>          return;<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>        }<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span><a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>        MergeTableRegionsRequest request = null;<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>        try {<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>          request = RequestConverter.buildMergeTableRegionsRequest(<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>            new byte[][] { encodeRegionNameA, encodeRegionNameB }, forcible, ng.getNonceGroup(),<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span>            ng.newNonce());<a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>        } catch (DeserializationException e) {<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span>          future.completeExceptionally(e);<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>          return;<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>        }<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span><a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>        addListener(<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>          this.&lt;MergeTableRegionsRequest, MergeTableRegionsResponse&gt; procedureCall(request,<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>            (s, c, req, done) -&gt; s.mergeTableRegions(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>            new MergeTableRegionProcedureBiConsumer(tableName)),<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>          (ret, err2) -&gt; {<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>            if (err2 != null) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>              future.completeExceptionally(err2);<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>            } else {<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>              future.complete(ret);<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>            }<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>          });<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>      });<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>    return future;<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>  @Override<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>  public CompletableFuture&lt;Void&gt; split(TableName tableName) {<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>    addListener(tableExists(tableName), (exist, error) -&gt; {<a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>      if (error != null) {<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>        future.completeExceptionally(error);<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span>        return;<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>      }<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>      if (!exist) {<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>        future.completeExceptionally(new TableNotFoundException(tableName));<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span>        return;<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>      }<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>      addListener(<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>        metaTable<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>          .scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY)<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>            .withStartRow(MetaTableAccessor.getTableStartRowForMeta(tableName, QueryType.REGION))<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>            .withStopRow(MetaTableAccessor.getTableStopRowForMeta(tableName, QueryType.REGION))),<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>        (results, err2) -&gt; {<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>          if (err2 != null) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>            future.completeExceptionally(err2);<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>            return;<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>          }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>          if (results != null &amp;&amp; !results.isEmpty()) {<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>            List&lt;CompletableFuture&lt;Void&gt;&gt; splitFutures = new ArrayList&lt;&gt;();<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>            for (Result r : results) {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>              if (r.isEmpty() || MetaTableAccessor.getRegionInfo(r) == null) {<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>                continue;<a name="line.1253"></a>
 <span class="sourceLineNo">1254</span>              }<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>            }<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>            addListener(<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>              CompletableFuture<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>                .allOf(splitFutures.toArray(new CompletableFuture&lt;?&gt;[splitFutures.size()])),<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>              (ret, exception) -&gt; {<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>                if (exception != null) {<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>                  future.completeExceptionally(exception);<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>                  return;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>                }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>                future.complete(ret);<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>              });<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          } else {<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>            future.complete(null);<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>          }<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>        });<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    });<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>    return future;<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>  }<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span><a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  @Override<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>  public CompletableFuture&lt;Void&gt; split(TableName tableName, byte[] splitPoint) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>    CompletableFuture&lt;Void&gt; result = new CompletableFuture&lt;&gt;();<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    if (splitPoint == null) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return failedFuture(new IllegalArgumentException("splitPoint can not be null."));<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    }<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>    addListener(connection.getRegionLocator(tableName).getRegionLocation(splitPoint),<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>      (loc, err) -&gt; {<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>        if (err != null) {<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>          result.completeExceptionally(err);<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>        } else if (loc == null || loc.getRegion() == null) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>          result.completeExceptionally(new IllegalArgumentException(<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>            "Region does not found: rowKey=" + Bytes.toStringBinary(splitPoint)));<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>        } else {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>          addListener(splitRegion(loc.getRegion().getRegionName(), splitPoint), (ret, err2) -&gt; {<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>            if (err2 != null) {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>              result.completeExceptionally(err2);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>            } else {<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>              result.complete(ret);<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>            }<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span><a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>          });<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>    return result;<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>  @Override<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>  public CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName) {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>      RegionInfo regionInfo = location.getRegion();<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>      if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>        future<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>          .completeExceptionally(new IllegalArgumentException("Can't split replicas directly. " +<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>            "Replicas are auto-split when their primary is split."));<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>        return;<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>      }<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>      ServerName serverName = location.getServerName();<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>      if (serverName == null) {<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>        future<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>        return;<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>      }<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>      addListener(split(regionInfo, null), (ret, err2) -&gt; {<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>        if (err2 != null) {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>          future.completeExceptionally(err2);<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>        } else {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>          future.complete(ret);<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>        }<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>      });<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>    });<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>    return future;<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>  @Override<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>  public CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName, byte[] splitPoint) {<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>    Preconditions.checkNotNull(splitPoint,<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>      "splitPoint is null. If you don't specify a splitPoint, use splitRegion(byte[]) instead");<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>      RegionInfo regionInfo = location.getRegion();<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>      if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>        future<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>          .completeExceptionally(new IllegalArgumentException("Can't split replicas directly. " +<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>            "Replicas are auto-split when their primary is split."));<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>        return;<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>      }<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      ServerName serverName = location.getServerName();<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      if (serverName == null) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>        future<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>        return;<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>      }<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>      if (regionInfo.getStartKey() != null &amp;&amp;<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>        Bytes.compareTo(regionInfo.getStartKey(), splitPoint) == 0) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>        future.completeExceptionally(<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>          new IllegalArgumentException("should not give a splitkey which equals to startkey!"));<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>        return;<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>      }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>      addListener(split(regionInfo, splitPoint), (ret, err2) -&gt; {<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>        if (err2 != null) {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>          future.completeExceptionally(err2);<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>        } else {<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>          future.complete(ret);<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>    });<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    return future;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  }<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span><a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  private CompletableFuture&lt;Void&gt; split(final RegionInfo hri, byte[] splitPoint) {<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>    TableName tableName = hri.getTable();<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>    SplitTableRegionRequest request = null;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>    try {<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      request = RequestConverter.buildSplitTableRegionRequest(hri, splitPoint, ng.getNonceGroup(),<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>        ng.newNonce());<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    } catch (DeserializationException e) {<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>      future.completeExceptionally(e);<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      return future;<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>    addListener(this.&lt;SplitTableRegionRequest, SplitTableRegionResponse&gt; procedureCall(request,<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      (s, c, req, done) -&gt; s.splitRegion(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>      new SplitTableRegionProcedureBiConsumer(tableName)), (ret, err2) -&gt; {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>        if (err2 != null) {<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>          future.completeExceptionally(err2);<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>        } else {<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>          future.complete(ret);<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>        }<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>      });<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    return future;<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span><a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>  @Override<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  public CompletableFuture&lt;Void&gt; assign(byte[] regionName) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>      if (err != null) {<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>        future.completeExceptionally(err);<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        return;<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>      }<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>      addListener(this.&lt;Void&gt; newMasterCaller()<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>        .action(((controller, stub) -&gt; this.&lt;AssignRegionRequest, AssignRegionResponse, Void&gt; call(<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          controller, stub, RequestConverter.buildAssignRegionRequest(regionInfo.getRegionName()),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          (s, c, req, done) -&gt; s.assignRegion(c, req, done), resp -&gt; null)))<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>        .call(), (ret, err2) -&gt; {<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>          if (err2 != null) {<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>            future.completeExceptionally(err2);<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>          } else {<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>            future.complete(ret);<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>    });<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>    return future;<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>  }<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span><a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>  @Override<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>  public CompletableFuture&lt;Void&gt; unassign(byte[] regionName, boolean forcible) {<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>      if (err != null) {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>        future.completeExceptionally(err);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>        return;<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>      }<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>      addListener(<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        this.&lt;Void&gt; newMasterCaller()<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>          .action(((controller, stub) -&gt; this<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>            .&lt;UnassignRegionRequest, UnassignRegionResponse, Void&gt; call(controller, stub,<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>              RequestConverter.buildUnassignRegionRequest(regionInfo.getRegionName(), forcible),<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>              (s, c, req, done) -&gt; s.unassignRegion(c, req, done), resp -&gt; null)))<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>          .call(),<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>        (ret, err2) -&gt; {<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>          if (err2 != null) {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>            future.completeExceptionally(err2);<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>          } else {<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>            future.complete(ret);<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>          }<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        });<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    });<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>    return future;<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>  }<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span><a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>  @Override<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  public CompletableFuture&lt;Void&gt; offline(byte[] regionName) {<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>      if (err != null) {<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>        future.completeExceptionally(err);<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>        return;<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      }<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>      addListener(<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        this.&lt;Void&gt; newMasterCaller()<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          .action(((controller, stub) -&gt; this<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>            .&lt;OfflineRegionRequest, OfflineRegionResponse, Void&gt; call(controller, stub,<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>              RequestConverter.buildOfflineRegionRequest(regionInfo.getRegionName()),<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>              (s, c, req, done) -&gt; s.offlineRegion(c, req, done), resp -&gt; null)))<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>          .call(),<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>        (ret, err2) -&gt; {<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>          if (err2 != null) {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>            future.completeExceptionally(err2);<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>          } else {<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>            future.complete(ret);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>          }<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>    return future;<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>  }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>  @Override<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>  public CompletableFuture&lt;Void&gt; move(byte[] regionName) {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      if (err != null) {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        future.completeExceptionally(err);<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        return;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>      }<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>      addListener(<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>        moveRegion(<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>          RequestConverter.buildMoveRegionRequest(regionInfo.getEncodedNameAsBytes(), null)),<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>        (ret, err2) -&gt; {<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>          if (err2 != null) {<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>            future.completeExceptionally(err2);<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>          } else {<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>            future.complete(ret);<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>          }<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>        });<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>    });<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>    return future;<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span><a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  @Override<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>  public CompletableFuture&lt;Void&gt; move(byte[] regionName, ServerName destServerName) {<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    Preconditions.checkNotNull(destServerName,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      "destServerName is null. If you don't specify a destServerName, use move(byte[]) instead");<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>      if (err != null) {<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>        future.completeExceptionally(err);<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        return;<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>      }<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>      addListener(moveRegion(RequestConverter<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>        .buildMoveRegionRequest(regionInfo.getEncodedNameAsBytes(), destServerName)),<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>        (ret, err2) -&gt; {<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>          if (err2 != null) {<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>            future.completeExceptionally(err2);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>          } else {<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>            future.complete(ret);<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>          }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>        });<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    });<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>    return future;<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>  }<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span><a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>  private CompletableFuture&lt;Void&gt; moveRegion(MoveRegionRequest request) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    return this<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>        .&lt;Void&gt; newMasterCaller()<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>        .action(<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>          (controller, stub) -&gt; this.&lt;MoveRegionRequest, MoveRegionResponse, Void&gt; call(controller,<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>            stub, request, (s, c, req, done) -&gt; s.moveRegion(c, req, done), resp -&gt; null)).call();<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>  }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span><a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>  @Override<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>  public CompletableFuture&lt;Void&gt; setQuota(QuotaSettings quota) {<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>    return this<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>        .&lt;Void&gt; newMasterCaller()<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>        .action(<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          (controller, stub) -&gt; this.&lt;SetQuotaRequest, SetQuotaResponse, Void&gt; call(controller,<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>            stub, QuotaSettings.buildSetQuotaRequestProto(quota),<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>            (s, c, req, done) -&gt; s.setQuota(c, req, done), (resp) -&gt; null)).call();<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>  }<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span><a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>  @Override<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>  public CompletableFuture&lt;List&lt;QuotaSettings&gt;&gt; getQuota(QuotaFilter filter) {<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    CompletableFuture&lt;List&lt;QuotaSettings&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    Scan scan = QuotaTableUtil.makeScan(filter);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    this.connection.getTableBuilder(QuotaTableUtil.QUOTA_TABLE_NAME).build()<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        .scan(scan, new AdvancedScanResultConsumer() {<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>          List&lt;QuotaSettings&gt; settings = new ArrayList&lt;&gt;();<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span><a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>          @Override<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>          public void onNext(Result[] results, ScanController controller) {<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>            for (Result result : results) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>              try {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                QuotaTableUtil.parseResultToCollection(result, settings);<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>              } catch (IOException e) {<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>                controller.terminate();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>                future.completeExceptionally(e);<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>              }<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>            }<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>          }<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span><a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>          @Override<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>          public void onError(Throwable error) {<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>            future.completeExceptionally(error);<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>          }<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span><a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>          @Override<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>          public void onComplete() {<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>            future.complete(settings);<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>    return future;<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>  }<a name="line.1558"></a>
+<span class="sourceLineNo">1255</span>              RegionLocations rl = MetaTableAccessor.getRegionLocations(r);<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>              if (rl != null) {<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>                for (HRegionLocation h : rl.getRegionLocations()) {<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>                  if (h != null &amp;&amp; h.getServerName() != null) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>                    RegionInfo hri = h.getRegion();<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>                    if (hri == null || hri.isSplitParent() ||<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>                      hri.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>                      continue;<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>                    }<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>                    splitFutures.add(split(hri, null));<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>                  }<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>                }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>              }<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>            }<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>            addListener(<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>              CompletableFuture<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>                .allOf(splitFutures.toArray(new CompletableFuture&lt;?&gt;[splitFutures.size()])),<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>              (ret, exception) -&gt; {<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>                if (exception != null) {<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>                  future.completeExceptionally(exception);<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>                  return;<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>                }<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>                future.complete(ret);<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>              });<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>          } else {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>            future.complete(null);<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>          }<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>        });<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    });<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    return future;<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>  @Override<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>  public CompletableFuture&lt;Void&gt; split(TableName tableName, byte[] splitPoint) {<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>    CompletableFuture&lt;Void&gt; result = new CompletableFuture&lt;&gt;();<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>    if (splitPoint == null) {<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>      return failedFuture(new IllegalArgumentException("splitPoint can not be null."));<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>    }<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>    addListener(connection.getRegionLocator(tableName).getRegionLocation(splitPoint),<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>      (loc, err) -&gt; {<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>        if (err != null) {<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>          result.completeExceptionally(err);<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>        } else if (loc == null || loc.getRegion() == null) {<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>          result.completeExceptionally(new IllegalArgumentException(<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>            "Region does not found: rowKey=" + Bytes.toStringBinary(splitPoint)));<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>        } else {<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>          addListener(splitRegion(loc.getRegion().getRegionName(), splitPoint), (ret, err2) -&gt; {<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>            if (err2 != null) {<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>              result.completeExceptionally(err2);<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>            } else {<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>              result.complete(ret);<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>          });<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>        }<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>      });<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>    return result;<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span><a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>  @Override<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  public CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName) {<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>      RegionInfo regionInfo = location.getRegion();<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>      if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>        future<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>          .completeExceptionally(new IllegalArgumentException("Can't split replicas directly. " +<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>            "Replicas are auto-split when their primary is split."));<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>        return;<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>      }<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>      ServerName serverName = location.getServerName();<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>      if (serverName == null) {<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>        future<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>        return;<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>      }<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>      addListener(split(regionInfo, null), (ret, err2) -&gt; {<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>        if (err2 != null) {<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>          future.completeExceptionally(err2);<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>        } else {<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>          future.complete(ret);<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>        }<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>      });<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>    });<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>    return future;<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>  }<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span><a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  @Override<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>  public CompletableFuture&lt;Void&gt; splitRegion(byte[] regionName, byte[] splitPoint) {<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>    Preconditions.checkNotNull(splitPoint,<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>      "splitPoint is null. If you don't specify a splitPoint, use splitRegion(byte[]) instead");<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>    addListener(getRegionLocation(regionName), (location, err) -&gt; {<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>      RegionInfo regionInfo = location.getRegion();<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>      if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>        future<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>          .completeExceptionally(new IllegalArgumentException("Can't split replicas directly. " +<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>            "Replicas are auto-split when their primary is split."));<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>        return;<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>      }<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>      ServerName serverName = location.getServerName();<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>      if (serverName == null) {<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>        future<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>          .completeExceptionally(new NoServerForRegionException(Bytes.toStringBinary(regionName)));<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>        return;<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>      }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>      if (regionInfo.getStartKey() != null &amp;&amp;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>        Bytes.compareTo(regionInfo.getStartKey(), splitPoint) == 0) {<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>        future.completeExceptionally(<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>          new IllegalArgumentException("should not give a splitkey which equals to startkey!"));<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>        return;<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>      }<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      addListener(split(regionInfo, splitPoint), (ret, err2) -&gt; {<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>        if (err2 != null) {<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>          future.completeExceptionally(err2);<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        } else {<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>          future.complete(ret);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>        }<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      });<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>    });<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>    return future;<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>  private CompletableFuture&lt;Void&gt; split(final RegionInfo hri, byte[] splitPoint) {<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    TableName tableName = hri.getTable();<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>    SplitTableRegionRequest request = null;<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    try {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>      request = RequestConverter.buildSplitTableRegionRequest(hri, splitPoint, ng.getNonceGroup(),<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>        ng.newNonce());<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>    } catch (DeserializationException e) {<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>      future.completeExceptionally(e);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>      return future;<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span><a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>    addListener(this.&lt;SplitTableRegionRequest, SplitTableRegionResponse&gt; procedureCall(request,<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>      (s, c, req, done) -&gt; s.splitRegion(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      new SplitTableRegionProcedureBiConsumer(tableName)), (ret, err2) -&gt; {<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>        if (err2 != null) {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>          future.completeExceptionally(err2);<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>        } else {<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>          future.complete(ret);<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        }<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>      });<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>    return future;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>  }<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span><a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>  @Override<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>  public CompletableFuture&lt;Void&gt; assign(byte[] regionName) {<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>      if (err != null) {<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>        future.completeExceptionally(err);<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>        return;<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>      }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>      addListener(this.&lt;Void&gt; newMasterCaller()<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>        .action(((controller, stub) -&gt; this.&lt;AssignRegionRequest, AssignRegionResponse, Void&gt; call(<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          controller, stub, RequestConverter.buildAssignRegionRequest(regionInfo.getRegionName()),<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          (s, c, req, done) -&gt; s.assignRegion(c, req, done), resp -&gt; null)))<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        .call(), (ret, err2) -&gt; {<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>          if (err2 != null) {<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>            future.completeExceptionally(err2);<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>          } else {<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>            future.complete(ret);<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>    });<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>    return future;<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>  }<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span><a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  @Override<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>  public CompletableFuture&lt;Void&gt; unassign(byte[] regionName, boolean forcible) {<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>      if (err != null) {<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>        future.completeExceptionally(err);<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>        return;<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>      }<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>      addListener(<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        this.&lt;Void&gt; newMasterCaller()<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>          .action(((controller, stub) -&gt; this<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>            .&lt;UnassignRegionRequest, UnassignRegionResponse, Void&gt; call(controller, stub,<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>              RequestConverter.buildUnassignRegionRequest(regionInfo.getRegionName(), forcible),<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>              (s, c, req, done) -&gt; s.unassignRegion(c, req, done), resp -&gt; null)))<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>          .call(),<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        (ret, err2) -&gt; {<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>          if (err2 != null) {<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            future.completeExceptionally(err2);<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>          } else {<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>            future.complete(ret);<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>    });<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>    return future;<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>  }<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>  @Override<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>  public CompletableFuture&lt;Void&gt; offline(byte[] regionName) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>      if (err != null) {<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>        future.completeExceptionally(err);<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>        return;<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>      }<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>      addListener(<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>        this.&lt;Void&gt; newMasterCaller()<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          .action(((controller, stub) -&gt; this<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span>            .&lt;OfflineRegionRequest, OfflineRegionResponse, Void&gt; call(controller, stub,<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>              RequestConverter.buildOfflineRegionRequest(regionInfo.getRegionName()),<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>              (s, c, req, done) -&gt; s.offlineRegion(c, req, done), resp -&gt; null)))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>          .call(),<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        (ret, err2) -&gt; {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          if (err2 != null) {<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>            future.completeExceptionally(err2);<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>          } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>            future.complete(ret);<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>          }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        });<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>    });<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>    return future;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span><a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>  @Override<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>  public CompletableFuture&lt;Void&gt; move(byte[] regionName) {<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>      if (err != null) {<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>        future.completeExceptionally(err);<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>        return;<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>      }<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>      addListener(<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>        moveRegion(<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>          RequestConverter.buildMoveRegionRequest(regionInfo.getEncodedNameAsBytes(), null)),<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>        (ret, err2) -&gt; {<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>          if (err2 != null) {<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>            future.completeExceptionally(err2);<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>          } else {<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>            future.complete(ret);<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>          }<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>        });<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>    });<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    return future;<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>  }<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span><a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  @Override<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>  public CompletableFuture&lt;Void&gt; move(byte[] regionName, ServerName destServerName) {<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>    Preconditions.checkNotNull(destServerName,<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      "destServerName is null. If you don't specify a destServerName, use move(byte[]) instead");<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>    addListener(getRegionInfo(regionName), (regionInfo, err) -&gt; {<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>      if (err != null) {<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>        future.completeExceptionally(err);<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>        return;<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>      }<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>      addListener(moveRegion(RequestConverter<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>        .buildMoveRegionRequest(regionInfo.getEncodedNameAsBytes(), destServerName)),<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        (ret, err2) -&gt; {<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>          if (err2 != null) {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>            future.completeExceptionally(err2);<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>          } else {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>            future.complete(ret);<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>          }<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>        });<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>    });<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>    return future;<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>  }<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span><a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>  private CompletableFuture&lt;Void&gt; moveRegion(MoveRegionRequest request) {<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    return this<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        .&lt;Void&gt; newMasterCaller()<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        .action(<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>          (controller, stub) -&gt; this.&lt;MoveRegionRequest, MoveRegionResponse, Void&gt; call(controller,<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>            stub, request, (s, c, req, done) -&gt; s.moveRegion(c, req, done), resp -&gt; null)).call();<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>  }<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span><a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>  @Override<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>  public CompletableFuture&lt;Void&gt; setQuota(QuotaSettings quota) {<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>    return this<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        .&lt;Void&gt; newMasterCaller()<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        .action(<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>          (controller, stub) -&gt; this.&lt;SetQuotaRequest, SetQuotaResponse, Void&gt; call(controller,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>            stub, QuotaSettings.buildSetQuotaRequestProto(quota),<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>            (s, c, req, done) -&gt; s.setQuota(c, req, done), (resp) -&gt; null)).call();<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>  }<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span><a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>  @Override<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>  public CompletableFuture&lt;List&lt;QuotaSettings&gt;&gt; getQuota(QuotaFilter filter) {<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>    CompletableFuture&lt;List&lt;QuotaSettings&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>    Scan scan = QuotaTableUtil.makeScan(filter);<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>    this.connection.getTableBuilder(QuotaTableUtil.QUOTA_TABLE_NAME).build()<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        .scan(scan, new AdvancedScanResultConsumer() {<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>          List&lt;QuotaSettings&gt; settings = new ArrayList&lt;&gt;();<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span><a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>          @Override<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>          public void onNext(Result[] results, ScanController controller) {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>            for (Result result : results) {<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>              try {<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>                QuotaTableUtil.parseResultToCollection(result, settings);<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>              } catch (IOException e) {<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>                controller.terminate();<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>                future.completeExceptionally(e);<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><a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  @Override<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>  public CompletableFuture&lt;Void&gt; addReplicationPeer(String peerId,<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>      ReplicationPeerConfig peerConfig, boolean enabled) {<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    return this.&lt;AddReplicationPeerRequest, AddReplicationPeerResponse&gt; procedureCall(<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>      RequestConverter.buildAddReplicationPeerRequest(peerId, peerConfig, enabled),<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>      (s, c, req, done) -&gt; s.addReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "ADD_REPLICATION_PEER"));<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>  }<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span><a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>  @Override<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>  public CompletableFuture&lt;Void&gt; removeReplicationPeer(String peerId) {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    return this.&lt;RemoveReplicationPeerRequest, RemoveReplicationPeerResponse&gt; procedureCall(<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      RequestConverter.buildRemoveReplicationPeerRequest(peerId),<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      (s, c, req, done) -&gt; s.removeReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "REMOVE_REPLICATION_PEER"));<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>  @Override<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  public CompletableFuture&lt;Void&gt; enableReplicationPeer(String peerId) {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>    return this.&lt;EnableReplicationPeerRequest, EnableReplicationPeerResponse&gt; procedureCall(<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      RequestConverter.buildEnableReplicationPeerRequest(peerId),<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>      (s, c, req, done) -&gt; s.enableReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "ENABLE_REPLICATION_PEER"));<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>  }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>  @Override<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>  public CompletableFuture&lt;Void&gt; disableReplicationPeer(String peerId) {<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    return this.&lt;DisableReplicationPeerRequest, DisableReplicationPeerResponse&gt; procedureCall(<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      RequestConverter.buildDisableReplicationPeerRequest(peerId),<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>      (s, c, req, done) -&gt; s.disableReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "DISABLE_REPLICATION_PEER"));<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  }<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span><a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  @Override<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>  public CompletableFuture&lt;ReplicationPeerConfig&gt; getReplicationPeerConfig(String peerId) {<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>    return this.&lt;ReplicationPeerConfig&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      .&lt;GetReplicationPeerConfigRequest, GetReplicationPeerConfigResponse, ReplicationPeerConfig&gt; call(<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>        controller, stub, RequestConverter.buildGetReplicationPeerConfigRequest(peerId),<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>        (s, c, req, done) -&gt; s.getReplicationPeerConfig(c, req, done),<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>        (resp) -&gt; ReplicationPeerConfigUtil.convert(resp.getPeerConfig())))<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      .call();<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>  @Override<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>  public CompletableFuture&lt;Void&gt; updateReplicationPeerConfig(String peerId,<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      ReplicationPeerConfig peerConfig) {<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>    return this<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      .&lt;UpdateReplicationPeerConfigRequest, UpdateReplicationPeerConfigResponse&gt; procedureCall(<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>        RequestConverter.buildUpdateReplicationPeerConfigRequest(peerId, peerConfig),<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>        (s, c, req, done) -&gt; s.updateReplicationPeerConfig(c, req, done),<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>        (resp) -&gt; resp.getProcId(),<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>        new ReplicationProcedureBiConsumer(peerId, () -&gt; "UPDATE_REPLICATION_PEER_CONFIG"));<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>  }<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span><a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>  @Override<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>  public CompletableFuture&lt;Void&gt; transitReplicationPeerSyncReplicationState(String peerId,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>      SyncReplicationState clusterState) {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    return this<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>      .&lt;TransitReplicationPeerSyncReplicationStateRequest, TransitReplicationPeerSyncReplicationStateResponse&gt; procedureCall(<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        RequestConverter.buildTransitReplicationPeerSyncReplicationStateRequest(peerId,<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>          clusterState),<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>        (s, c, req, done) -&gt; s.transitReplicationPeerSyncReplicationState(c, req, done),<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        (resp) -&gt; resp.getProcId(), new ReplicationProcedureBiConsumer(peerId,<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>          () -&gt; "TRANSIT_REPLICATION_PEER_SYNCHRONOUS_REPLICATION_STATE"));<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>  }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>  @Override<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>  public CompletableFuture&lt;Void&gt; appendReplicationPeerTableCFs(String id,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    if (tableCfs == null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      return failedFuture(new ReplicationException("tableCfs is null"));<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>    }<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span><a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>    addListener(getReplicationPeerConfig(id), (peerConfig, error) -&gt; {<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>      if (!completeExceptionally(future, error)) {<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        ReplicationPeerConfig newPeerConfig =<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, peerConfig);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        addListener(updateReplicationPeerConfig(id, newPeerConfig), (result, err) -&gt; {<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>          if (!completeExceptionally(future, error)) {<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>            future.complete(result);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          }<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>        });<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>      }<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    });<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>    return future;<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>  @Override<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>  public CompletableFuture&lt;Void&gt; removeReplicationPeerTableCFs(String id,<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs) {<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    if (tableCfs == null) {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      return failedFuture(new ReplicationException("tableCfs is null"));<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>    }<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span><a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>    addListener(getReplicationPeerConfig(id), (peerConfig, error) -&gt; {<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>      if (!completeExceptionally(future, error)) {<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        ReplicationPeerConfig newPeerConfig = null;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        try {<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>          newPeerConfig = ReplicationPeerConfigUtil<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>            .removeTableCFsFromReplicationPeerConfig(tableCfs, peerConfig, id);<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        } catch (ReplicationException e) {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>          future.completeExceptionally(e);<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>          return;<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        }<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        addListener(updateReplicationPeerConfig(id, newPeerConfig), (result, err) -&gt; {<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>          if (!completeExceptionally(future, error)) {<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>            future.complete(result);<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>          }<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        });<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      }<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>    });<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>    return future;<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>  }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span><a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>  @Override<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>  public CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers() {<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    return listReplicationPeers(RequestConverter.buildListReplicationPeersRequest(null));<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>  }<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span><a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>  @Override<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  public CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers(Pattern pattern) {<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    Preconditions.checkNotNull(pattern,<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>      "pattern is null. If you don't specify a pattern, use listReplicationPeers() instead");<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>    return listReplicationPeers(RequestConverter.buildListReplicationPeersRequest(pattern));<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>  }<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span><a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>  private CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers(<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      ListReplicationPeersRequest request) {<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>    return this<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>        .&lt;List&lt;ReplicationPeerDescription&gt;&gt; newMasterCaller()<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>        .action(<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>          (controller, stub) -&gt; this<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>              .&lt;ListReplicationPeersRequest, ListReplicationPeersResponse, List&lt;ReplicationPeerDescription&gt;&gt; call(<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>                controller,<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>                stub,<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>                request,<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>                (s, c, req, done) -&gt; s.listReplicationPeers(c, req, done),<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>                (resp) -&gt; resp.getPeerDescList().stream()<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>                    .map(ReplicationPeerConfigUtil::toReplicationPeerDescription)<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>                    .collect(Collectors.toList()))).call();<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>  }<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span><a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>  @Override<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>  public CompletableFuture&lt;List&lt;TableCFs&gt;&gt; listReplicatedTableCFs() {<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>    CompletableFuture&lt;List&lt;TableCFs&gt;&gt; future = new CompletableFuture&lt;List&lt;TableCFs&gt;&gt;();<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>    addListener(listTableDescriptors(), (tables, error) -&gt; {<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>      if (!completeExceptionally(future, error)) {<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>        List&lt;TableCFs&gt; replicatedTableCFs = new ArrayList&lt;&gt;();<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>        tables.forEach(table -&gt; {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>          Map&lt;String, Integer&gt; cfs = new HashMap&lt;&gt;();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>          Stream.of(table.getColumnFamilies())<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>            .filter(column -&gt; column.getScope() != HConstants.REPLICATION_SCOPE_LOCAL)<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>            .forEach(column -&gt; {<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>              cfs.put(column.getNameAsString(), column.getScope());<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>            });<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>          if (!cfs.isEmpty()) {<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>            replicatedTableCFs.add(new TableCFs(table.getTableName(), cfs));<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>        future.complete(replicatedTableCFs);<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      }<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    });<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    return future;<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  @Override<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>  public CompletableFuture&lt;Void&gt; snapshot(SnapshotDescription snapshotDesc) {<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    SnapshotProtos.SnapshotDescription snapshot =<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>      ProtobufUtil.createHBaseProtosSnapshotDesc(snapshotDesc);<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>    try {<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>      ClientSnapshotDescriptionUtils.assertSnapshotRequestIsValid(snapshot);<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>    } catch (IllegalArgumentException e) {<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>      return failedFuture(e);<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    }<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    final SnapshotRequest request = SnapshotRequest.newBuilder().setSnapshot(snapshot).build();<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>    addListener(this.&lt;Long&gt; newMasterCaller()<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>      .action((controller, stub) -&gt; this.&lt;SnapshotRequest, SnapshotResponse, Long&gt; call(controller,<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>        stub, request, (s, c, req, done) -&gt; s.snapshot(c, req, done),<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>        resp -&gt; resp.getExpectedTimeout()))<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>      .call(), (expectedTimeout, err) -&gt; {<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>        if (err != null) {<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>          future.completeExceptionally(err);<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>          return;<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        }<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>        TimerTask pollingTask = new TimerTask() {<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>          int tries = 0;<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>          long endTime = startTime + expectedTimeout;<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>          long maxPauseTime = expectedTimeout / maxAttempts;<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span><a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>          @Override<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>          public void run(Timeout timeout) throws Exception {<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>            if (EnvironmentEdgeManager.currentTime() &lt; endTime) {<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>              addListener(isSnapshotFinished(snapshotDesc), (done, err2) -&gt; {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>                if (err2 != null) {<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>                  future.completeExceptionally(err2);<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>                } else if (done) {<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>                  future.complete(null);<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>                } else {<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>                  // retry again after pauseTime.<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>                  long pauseTime =<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>                    ConnectionUtils.getPauseTime(TimeUnit.NANOSECONDS.toMillis(pauseNs), ++tries);<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>                  pauseTime = Math.min(pauseTime, maxPauseTime);<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>                  AsyncConnectionImpl.RETRY_TIMER.newTimeout(this, pauseTime,<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>                    TimeUnit.MILLISECONDS);<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>                }<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>              });<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>            } else {<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>              future.completeExceptionally(<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>                new SnapshotCreationException("Snapshot '" + snapshot.getName() +<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>                  "' wasn't completed in expectedTime:" + expectedTimeout + " ms", snapshotDesc));<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>            }<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>          }<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>        };<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>        AsyncConnectionImpl.RETRY_TIMER.newTimeout(pollingTask, 1, TimeUnit.MILLISECONDS);<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>      });<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    return future;<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>  @Override<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  public CompletableFuture&lt;Boolean&gt; isSnapshotFinished(SnapshotDescription snapshot) {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    return this<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>        .&lt;Boolean&gt; newMasterCaller()<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>        .action(<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>          (controller, stub) -&gt; this.&lt;IsSnapshotDoneRequest, IsSnapshotDoneResponse, Boolean&gt; call(<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>            controller,<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>            stub,<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>            IsSnapshotDoneRequest.newBuilder()<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>                .setSnapshot(ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot)).build(), (s, c,<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>                req, done) -&gt; s.isSnapshotDone(c, req, done), resp -&gt; resp.getDone())).call();<a name="line.1792"></a>
+<span class="sourceLineNo">1560</span>          @Override<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>          public void onError(Throwable error) {<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>            future.completeExceptionally(error);<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>          }<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span><a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>          @Override<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>          public void onComplete() {<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>            future.complete(settings);<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>          }<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>        });<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    return future;<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>  }<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span><a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>  @Override<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>  public CompletableFuture&lt;Void&gt; addReplicationPeer(String peerId,<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      ReplicationPeerConfig peerConfig, boolean enabled) {<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    return this.&lt;AddReplicationPeerRequest, AddReplicationPeerResponse&gt; procedureCall(<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      RequestConverter.buildAddReplicationPeerRequest(peerId, peerConfig, enabled),<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>      (s, c, req, done) -&gt; s.addReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "ADD_REPLICATION_PEER"));<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>  }<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span><a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>  @Override<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>  public CompletableFuture&lt;Void&gt; removeReplicationPeer(String peerId) {<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>    return this.&lt;RemoveReplicationPeerRequest, RemoveReplicationPeerResponse&gt; procedureCall(<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      RequestConverter.buildRemoveReplicationPeerRequest(peerId),<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      (s, c, req, done) -&gt; s.removeReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "REMOVE_REPLICATION_PEER"));<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>  @Override<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>  public CompletableFuture&lt;Void&gt; enableReplicationPeer(String peerId) {<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>    return this.&lt;EnableReplicationPeerRequest, EnableReplicationPeerResponse&gt; procedureCall(<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>      RequestConverter.buildEnableReplicationPeerRequest(peerId),<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>      (s, c, req, done) -&gt; s.enableReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "ENABLE_REPLICATION_PEER"));<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>  }<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span><a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  @Override<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>  public CompletableFuture&lt;Void&gt; disableReplicationPeer(String peerId) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>    return this.&lt;DisableReplicationPeerRequest, DisableReplicationPeerResponse&gt; procedureCall(<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>      RequestConverter.buildDisableReplicationPeerRequest(peerId),<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>      (s, c, req, done) -&gt; s.disableReplicationPeer(c, req, done), (resp) -&gt; resp.getProcId(),<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>      new ReplicationProcedureBiConsumer(peerId, () -&gt; "DISABLE_REPLICATION_PEER"));<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>  }<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span><a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>  @Override<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>  public CompletableFuture&lt;ReplicationPeerConfig&gt; getReplicationPeerConfig(String peerId) {<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>    return this.&lt;ReplicationPeerConfig&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>      .&lt;GetReplicationPeerConfigRequest, GetReplicationPeerConfigResponse, ReplicationPeerConfig&gt; call(<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>        controller, stub, RequestConverter.buildGetReplicationPeerConfigRequest(peerId),<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>        (s, c, req, done) -&gt; s.getReplicationPeerConfig(c, req, done),<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>        (resp) -&gt; ReplicationPeerConfigUtil.convert(resp.getPeerConfig())))<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>      .call();<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>  @Override<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>  public CompletableFuture&lt;Void&gt; updateReplicationPeerConfig(String peerId,<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      ReplicationPeerConfig peerConfig) {<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>    return this<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>      .&lt;UpdateReplicationPeerConfigRequest, UpdateReplicationPeerConfigResponse&gt; procedureCall(<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        RequestConverter.buildUpdateReplicationPeerConfigRequest(peerId, peerConfig),<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>        (s, c, req, done) -&gt; s.updateReplicationPeerConfig(c, req, done),<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        (resp) -&gt; resp.getProcId(),<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>        new ReplicationProcedureBiConsumer(peerId, () -&gt; "UPDATE_REPLICATION_PEER_CONFIG"));<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>  }<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span><a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>  @Override<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>  public CompletableFuture&lt;Void&gt; transitReplicationPeerSyncReplicationState(String peerId,<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      SyncReplicationState clusterState) {<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>    return this<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>      .&lt;TransitReplicationPeerSyncReplicationStateRequest, TransitReplicationPeerSyncReplicationStateResponse&gt; procedureCall(<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>        RequestConverter.buildTransitReplicationPeerSyncReplicationStateRequest(peerId,<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>          clusterState),<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>        (s, c, req, done) -&gt; s.transitReplicationPeerSyncReplicationState(c, req, done),<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>        (resp) -&gt; resp.getProcId(), new ReplicationProcedureBiConsumer(peerId,<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>          () -&gt; "TRANSIT_REPLICATION_PEER_SYNCHRONOUS_REPLICATION_STATE"));<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>  @Override<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  public CompletableFuture&lt;Void&gt; appendReplicationPeerTableCFs(String id,<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs) {<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>    if (tableCfs == null) {<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>      return failedFuture(new ReplicationException("tableCfs is null"));<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span><a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>    addListener(getReplicationPeerConfig(id), (peerConfig, error) -&gt; {<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>      if (!completeExceptionally(future, error)) {<a name="line.1648"></a>
+<span class="sourceLineNo">1649</span>        ReplicationPeerConfig newPeerConfig =<a name="line.1649"></a>
+<span class="sourceLineNo">1650</span>          ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, peerConfig);<a name="line.1650"></a>
+<span class="sourceLineNo">1651</span>        addListener(updateReplicationPeerConfig(id, newPeerConfig), (result, err) -&gt; {<a name="line.1651"></a>
+<span class="sourceLineNo">1652</span>          if (!completeExceptionally(future, error)) {<a name="line.1652"></a>
+<span class="sourceLineNo">1653</span>            future.complete(result);<a name="line.1653"></a>
+<span class="sourceLineNo">1654</span>          }<a name="line.1654"></a>
+<span class="sourceLineNo">1655</span>        });<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>    return future;<a name="line.1658"></a>
+<span class="sourceLineNo">1659</span>  }<a name="line.1659"></a>
+<span class="sourceLineNo">1660</span><a name="line.1660"></a>
+<span class="sourceLineNo">1661</span>  @Override<a name="line.1661"></a>
+<span class="sourceLineNo">1662</span>  public CompletableFuture&lt;Void&gt; removeReplicationPeerTableCFs(String id,<a name="line.1662"></a>
+<span class="sourceLineNo">1663</span>      Map&lt;TableName, List&lt;String&gt;&gt; tableCfs) {<a name="line.1663"></a>
+<span class="sourceLineNo">1664</span>    if (tableCfs == null) {<a name="line.1664"></a>
+<span class="sourceLineNo">1665</span>      return failedFuture(new ReplicationException("tableCfs is null"));<a name="line.1665"></a>
+<span class="sourceLineNo">1666</span>    }<a name="line.1666"></a>
+<span class="sourceLineNo">1667</span><a name="line.1667"></a>
+<span class="sourceLineNo">1668</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;Void&gt;();<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span>    addListener(getReplicationPeerConfig(id), (peerConfig, error) -&gt; {<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span>      if (!completeExceptionally(future, error)) {<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span>        ReplicationPeerConfig newPeerConfig = null;<a name="line.1671"></a>
+<span class="sourceLineNo">1672</span>        try {<a name="line.1672"></a>
+<span class="sourceLineNo">1673</span>          newPeerConfig = ReplicationPeerConfigUtil<a name="line.1673"></a>
+<span class="sourceLineNo">1674</span>            .removeTableCFsFromReplicationPeerConfig(tableCfs, peerConfig, id);<a name="line.1674"></a>
+<span class="sourceLineNo">1675</span>        } catch (ReplicationException e) {<a name="line.1675"></a>
+<span class="sourceLineNo">1676</span>          future.completeExceptionally(e);<a name="line.1676"></a>
+<span class="sourceLineNo">1677</span>          return;<a name="line.1677"></a>
+<span class="sourceLineNo">1678</span>        }<a name="line.1678"></a>
+<span class="sourceLineNo">1679</span>        addListener(updateReplicationPeerConfig(id, newPeerConfig), (result, err) -&gt; {<a name="line.1679"></a>
+<span class="sourceLineNo">1680</span>          if (!completeExceptionally(future, error)) {<a name="line.1680"></a>
+<span class="sourceLineNo">1681</span>            future.complete(result);<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>      }<a name="line.1684"></a>
+<span class="sourceLineNo">1685</span>    });<a name="line.1685"></a>
+<span class="sourceLineNo">1686</span>    return future;<a name="line.1686"></a>
+<span class="sourceLineNo">1687</span>  }<a name="line.1687"></a>
+<span class="sourceLineNo">1688</span><a name="line.1688"></a>
+<span class="sourceLineNo">1689</span>  @Override<a name="line.1689"></a>
+<span class="sourceLineNo">1690</span>  public CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers() {<a name="line.1690"></a>
+<span class="sourceLineNo">1691</span>    return listReplicationPeers(RequestConverter.buildListReplicationPeersRequest(null));<a name="line.1691"></a>
+<span class="sourceLineNo">1692</span>  }<a name="line.1692"></a>
+<span class="sourceLineNo">1693</span><a name="line.1693"></a>
+<span class="sourceLineNo">1694</span>  @Override<a name="line.1694"></a>
+<span class="sourceLineNo">1695</span>  public CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers(Pattern pattern) {<a name="line.1695"></a>
+<span class="sourceLineNo">1696</span>    Preconditions.checkNotNull(pattern,<a name="line.1696"></a>
+<span class="sourceLineNo">1697</span>      "pattern is null. If you don't specify a pattern, use listReplicationPeers() instead");<a name="line.1697"></a>
+<span class="sourceLineNo">1698</span>    return listReplicationPeers(RequestConverter.buildListReplicationPeersRequest(pattern));<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>  private CompletableFuture&lt;List&lt;ReplicationPeerDescription&gt;&gt; listReplicationPeers(<a name="line.1701"></a>
+<span class="sourceLineNo">1702</span>      ListReplicationPeersRequest request) {<a name="line.1702"></a>
+<span class="sourceLineNo">1703</span>    return this<a name="line.1703"></a>
+<span class="sourceLineNo">1704</span>        .&lt;List&lt;ReplicationPeerDescription&gt;&gt; newMasterCaller()<a name="line.1704"></a>
+<span class="sourceLineNo">1705</span>        .action(<a name="line.1705"></a>
+<span class="sourceLineNo">1706</span>          (controller, stub) -&gt; this<a name="line.1706"></a>
+<span class="sourceLineNo">1707</span>              .&lt;ListReplicationPeersRequest, ListReplicationPeersResponse, List&lt;ReplicationPeerDescription&gt;&gt; call(<a name="line.1707"></a>
+<span class="sourceLineNo">1708</span>                controller,<a name="line.1708"></a>
+<span class="sourceLineNo">1709</span>                stub,<a name="line.1709"></a>
+<span class="sourceLineNo">1710</span>                request,<a name="line.1710"></a>
+<span class="sourceLineNo">1711</span>                (s, c, req, done) -&gt; s.listReplicationPeers(c, req, done),<a name="line.1711"></a>
+<span class="sourceLineNo">1712</span>                (resp) -&gt; resp.getPeerDescList().stream()<a name="line.1712"></a>
+<span class="sourceLineNo">1713</span>                    .map(ReplicationPeerConfigUtil::toReplicationPeerDescription)<a name="line.1713"></a>
+<span class="sourceLineNo">1714</span>                    .collect(Collectors.toList()))).call();<a name="line.1714"></a>
+<span class="sourceLineNo">1715</span>  }<a name="line.1715"></a>
+<span class="sourceLineNo">1716</span><a name="line.1716"></a>
+<span class="sourceLineNo">1717</span>  @Override<a name="line.1717"></a>
+<span class="sourceLineNo">1718</span>  public CompletableFuture&lt;List&lt;TableCFs&gt;&gt; listReplicatedTableCFs() {<a name="line.1718"></a>
+<span class="sourceLineNo">1719</span>    CompletableFuture&lt;List&lt;TableCFs&gt;&gt; future = new CompletableFuture&lt;List&lt;TableCFs&gt;&gt;();<a name="line.1719"></a>
+<span class="sourceLineNo">1720</span>    addListener(listTableDescriptors(), (tables, error) -&gt; {<a name="line.1720"></a>
+<span class="sourceLineNo">1721</span>      if (!completeExceptionally(future, error)) {<a name="line.1721"></a>
+<span class="sourceLineNo">1722</span>        List&lt;TableCFs&gt; replicatedTableCFs = new ArrayList&lt;&gt;();<a name="line.1722"></a>
+<span class="sourceLineNo">1723</span>        tables.forEach(table -&gt; {<a name="line.1723"></a>
+<span class="sourceLineNo">1724</span>          Map&lt;String, Integer&gt; cfs = new HashMap&lt;&gt;();<a name="line.1724"></a>
+<span class="sourceLineNo">1725</span>          Stream.of(table.getColumnFamilies())<a name="line.1725"></a>
+<span class="sourceLineNo">1726</span>            .filter(column -&gt; column.getScope() != HConstants.REPLICATION_SCOPE_LOCAL)<a name="line.1726"></a>
+<span class="sourceLineNo">1727</span>            .forEach(column -&gt; {<a name="line.1727"></a>
+<span class="sourceLineNo">1728</span>              cfs.put(column.getNameAsString(), column.getScope());<a name="line.1728"></a>
+<span class="sourceLineNo">1729</span>            });<a name="line.1729"></a>
+<span class="sourceLineNo">1730</span>          if (!cfs.isEmpty()) {<a name="line.1730"></a>
+<span class="sourceLineNo">1731</span>            replicatedTableCFs.add(new TableCFs(table.getTableName(), cfs));<a name="line.1731"></a>
+<span class="sourceLineNo">1732</span>          }<a name="line.1732"></a>
+<span class="sourceLineNo">1733</span>        });<a name="line.1733"></a>
+<span class="sourceLineNo">1734</span>        future.complete(replicatedTableCFs);<a name="line.1734"></a>
+<span class="sourceLineNo">1735</span>      }<a name="line.1735"></a>
+<span class="sourceLineNo">1736</span>    });<a name="line.1736"></a>
+<span class="sourceLineNo">1737</span>    return future;<a name="line.1737"></a>
+<span class="sourceLineNo">1738</span>  }<a name="line.1738"></a>
+<span class="sourceLineNo">1739</span><a name="line.1739"></a>
+<span class="sourceLineNo">1740</span>  @Override<a name="line.1740"></a>
+<span class="sourceLineNo">1741</span>  public CompletableFuture&lt;Void&gt; snapshot(SnapshotDescription snapshotDesc) {<a name="line.1741"></a>
+<span class="sourceLineNo">1742</span>    SnapshotProtos.SnapshotDescription snapshot =<a name="line.1742"></a>
+<span class="sourceLineNo">1743</span>      ProtobufUtil.createHBaseProtosSnapshotDesc(snapshotDesc);<a name="line.1743"></a>
+<span class="sourceLineNo">1744</span>    try {<a name="line.1744"></a>
+<span class="sourceLineNo">1745</span>      ClientSnapshotDescriptionUtils.assertSnapshotRequestIsValid(snapshot);<a name="line.1745"></a>
+<span class="sourceLineNo">1746</span>    } catch (IllegalArgumentException e) {<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span>      return failedFuture(e);<a name="line.1747"></a>
+<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
+<span class="sourceLineNo">1749</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span>    final SnapshotRequest request = SnapshotRequest.newBuilder().setSnapshot(snapshot).build();<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span>    addListener(this.&lt;Long&gt; newMasterCaller()<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span>      .action((controller, stub) -&gt; this.&lt;SnapshotRequest, SnapshotResponse, Long&gt; call(controller,<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span>        stub, request, (s, c, req, done) -&gt; s.snapshot(c, req, done),<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span>        resp -&gt; resp.getExpectedTimeout()))<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span>      .call(), (expectedTimeout, err) -&gt; {<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span>        if (err != null) {<a name="line.1756"></a>
+<span class="sourceLineNo">1757</span>          future.completeExceptionally(err);<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span>          return;<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span>        }<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span>        TimerTask pollingTask = new TimerTask() {<a name="line.1760"></a>
+<span class="sourceLineNo">1761</span>          int tries = 0;<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span>          long endTime = startTime + expectedTimeout;<a name="line.1763"></a>
+<span class="sourceLineNo">1764</span>          long maxPauseTime = expectedTimeout / maxAttempts;<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span><a name="line.1765"></a>
+<span class="sourceLineNo">1766</span>          @Override<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span>          public void run(Timeout timeout) throws Exception {<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span>            if (EnvironmentEdgeManager.currentTime() &lt; endTime) {<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span>              addListener(isSnapshotFinished(snapshotDesc), (done, err2) -&gt; {<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span>                if (err2 != null) {<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span>                  future.completeExceptionally(err2);<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span>                } else if (done) {<a name="line.1772"></a>
+<span class="sourceLineNo">1773</span>                  future.complete(null);<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span>                } else {<a name="line.1774"></a>
+<span class="sourceLineNo">1775</span>                  // retry again after pauseTime.<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span>                  long pauseTime =<a name="line.1776"></a>
+<span class="sourceLineNo">1777</span>                    ConnectionUtils.getPauseTime(TimeUnit.NANOSECONDS.toMillis(pauseNs), ++tries);<a name="line.1777"></a>
+<span class="sourceLineNo">1778</span>                  pauseTime = Math.min(pauseTime, maxPauseTime);<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span>                  AsyncConnectionImpl.RETRY_TIMER.newTimeout(this, pauseTime,<a name="line.1779"></a>
+<span class="sourceLineNo">1780</span>                    TimeUnit.MILLISECONDS);<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span>                }<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span>              });<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span>            } else {<a name="line.1783"></a>
+<span class="sourceLineNo">1784</span>              future.completeExceptionally(<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span>                new SnapshotCreationException("Snapshot '" + snapshot.getName() +<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span>                  "' wasn't completed in expectedTime:" + expectedTimeout + " ms", snapshotDesc));<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span>            }<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span>          }<a name="line.1788"></a>
+<span class="sourceLineNo">1789</span>        };<a name="line.1789"></a>
+<span class="sourceLineNo">1790</span>        AsyncConnectionImpl.RETRY_TIMER.newTimeout(pollingTask, 1, TimeUnit.MILLISECONDS);<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span>      });<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span>    return future;<a name="line.1792"></a>
 <span class="sourceLineNo">1793</span>  }<a name="line.1793"></a>
 <span class="sourceLineNo">1794</span><a name="line.1794"></a>
 <span class="sourceLineNo">1795</span>  @Override<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>  public CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    boolean takeFailSafeSnapshot = this.connection.getConfiguration().getBoolean(<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>      HConstants.SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT,<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>      HConstants.DEFAULT_SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT);<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return restoreSnapshot(snapshotName, takeFailSafeSnapshot);<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName,<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>      boolean takeFailSafeSnapshot) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    addListener(listSnapshots(Pattern.compile(snapshotName)), (snapshotDescriptions, err) -&gt; {<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>      if (err != null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>        future.completeExceptionally(err);<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>        return;<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>      }<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      TableName tableName = null;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>      if (snapshotDescriptions != null &amp;&amp; !snapshotDescriptions.isEmpty()) {<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span>        for (SnapshotDescription snap : snapshotDescriptions) {<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>          if (snap.getName().equals(snapshotName)) {<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>            tableName = snap.getTableName();<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>            break;<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>          }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>        }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>      }<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      if (tableName == null) {<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>        future.completeExceptionally(new RestoreSnapshotException(<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>          "Unable to find the table name for snapshot=" + snapshotName));<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>        return;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>      }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>      final TableName finalTableName = tableName;<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      addListener(tableExists(finalTableName), (exists, err2) -&gt; {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>        if (err2 != null) {<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>          future.completeExceptionally(err2);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>        } else if (!exists) {<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>          // if table does not exist, then just clone snapshot into new table.<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>          completeConditionalOnFuture(future,<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>            internalRestoreSnapshot(snapshotName, finalTableName));<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>        } else {<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>          addListener(isTableDisabled(finalTableName), (disabled, err4) -&gt; {<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>            if (err4 != null) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>              future.completeExceptionally(err4);<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>            } else if (!disabled) {<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>              future.completeExceptionally(new TableNotDisabledException(finalTableName));<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>            } else {<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>              completeConditionalOnFuture(future,<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>                restoreSnapshot(snapshotName, finalTableName, takeFailSafeSnapshot));<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>            }<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>          });<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>        }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>      });<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>    });<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>    return future;<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  }<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span><a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  private CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName, TableName tableName,<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span>      boolean takeFailSafeSnapshot) {<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>    if (takeFailSafeSnapshot) {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>      CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>      // Step.1 Take a snapshot of the current state<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>      String failSafeSnapshotSnapshotNameFormat =<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>        this.connection.getConfiguration().get(HConstants.SNAPSHOT_RESTORE_FAILSAFE_NAME,<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>          HConstants.DEFAULT_SNAPSHOT_RESTORE_FAILSAFE_NAME);<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>      final String failSafeSnapshotSnapshotName =<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>        failSafeSnapshotSnapshotNameFormat.replace("{snapshot.name}", snapshotName)<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span>          .replace("{table.name}", tableName.toString().replace(TableName.NAMESPACE_DELIM, '.'))<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>          .replace("{restore.timestamp}", String.valueOf(EnvironmentEdgeManager.currentTime()));<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>      LOG.info("Taking restore-failsafe snapshot: " + failSafeSnapshotSnapshotName);<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>      addListener(snapshot(failSafeSnapshotSnapshotName, tableName), (ret, err) -&gt; {<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>        if (err != null) {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>          future.completeExceptionally(err);<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>        } else {<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>          // Step.2 Restore snapshot<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>          addListener(internalRestoreSnapshot(snapshotName, tableName), (void2, err2) -&gt; {<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>            if (err2 != null) {<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>              // Step.3.a Something went wrong during the restore and try to rollback.<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>              addListener(internalRestoreSnapshot(failSafeSnapshotSnapshotName, tableName),<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>                (void3, err3) -&gt; {<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>                  if (err3 != null) {<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>                    future.completeExceptionally(err3);<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>                  } else {<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span>                    String msg =<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>                      "Restore snapshot=" + snapshotName + " failed. Rollback to snapshot=" +<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>                        failSafeSnapshotSnapshotName + " succeeded.";<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>                    future.completeExceptionally(new RestoreSnapshotException(msg));<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>                  }<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>                });<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>            } else {<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span>              // Step.3.b If the restore is succeeded, delete the pre-restore snapshot.<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>              LOG.info("Deleting restore-failsafe snapshot: " + failSafeSnapshotSnapshotName);<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>              addListener(deleteSnapshot(failSafeSnapshotSnapshotName), (ret3, err3) -&gt; {<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>                if (err3 != null) {<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>                  LOG.error(<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>                    "Unable to remove the failsafe snapshot: " + failSafeSnapshotSnapshotName,<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>                    err3);<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>                  future.completeExceptionally(err3);<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>                } else {<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>                  future.complete(ret3);<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span>                }<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>              });<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>            }<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>          });<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>      return future;<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span>    } else {<a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>      return internalRestoreSnapshot(snapshotName, tableName);<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>    }<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>  }<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span><a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>  private &lt;T&gt; void completeConditionalOnFuture(CompletableFuture&lt;T&gt; dependentFuture,<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      CompletableFuture&lt;T&gt; parentFuture) {<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    addListener(parentFuture, (res, err) -&gt; {<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>      if (err != null) {<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>        dependentFuture.completeExceptionally(err);<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span>      } else {<a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>        dependentFuture.complete(res);<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>      }<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>    });<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>  }<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span><a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>  @Override<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  public CompletableFuture&lt;Void&gt; cloneSnapshot(String snapshotName, TableName tableName) {<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>    addListener(tableExists(tableName), (exists, err) -&gt; {<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>      if (err != null) {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>        future.completeExceptionally(err);<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>      } else if (exists) {<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span>        future.completeExceptionally(new TableExistsException(tableName));<a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>      } else {<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>        completeConditionalOnFuture(future, internalRestoreSnapshot(snapshotName, tableName));<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>      }<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>    });<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return future;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  private CompletableFuture&lt;Void&gt; internalRestoreSnapshot(String snapshotName, TableName tableName) {<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>    SnapshotProtos.SnapshotDescription snapshot = SnapshotProtos.SnapshotDescription.newBuilder()<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>        .setName(snapshotName).setTable(tableName.getNameAsString()).build();<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>    try {<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>      ClientSnapshotDescriptionUtils.assertSnapshotRequestIsValid(snapshot);<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>    } catch (IllegalArgumentException e) {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>      return failedFuture(e);<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    }<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    return waitProcedureResult(this<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>        .&lt;Long&gt; newMasterCaller()<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>        .action(<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>          (controller, stub) -&gt; this.&lt;RestoreSnapshotRequest, RestoreSnapshotResponse, Long&gt; call(<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>            controller, stub, RestoreSnapshotRequest.newBuilder().setSnapshot(snapshot)<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>                .setNonceGroup(ng.getNonceGroup()).setNonce(ng.newNonce()).build(), (s, c, req,<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>                done) -&gt; s.restoreSnapshot(c, req, done), (resp) -&gt; resp.getProcId())).call());<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>  }<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span><a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>  @Override<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots() {<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>    return getCompletedSnapshots(null);<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>  @Override<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots(Pattern pattern) {<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>    Preconditions.checkNotNull(pattern,<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>      "pattern is null. If you don't specify a pattern, use listSnapshots() instead");<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>    return getCompletedSnapshots(pattern);<a name="line.1958"></a>
-<span class="sourceLineNo">1959</span>  }<a name="line.1959"></a>
-<span class="sourceLineNo">1960</span><a name="line.1960"></a>
-<span class="sourceLineNo">1961</span>  private CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; getCompletedSnapshots(Pattern pattern) {<a name="line.1961"></a>
-<span class="sourceLineNo">1962</span>    return this.&lt;List&lt;SnapshotDescription&gt;&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.1962"></a>
-<span class="sourceLineNo">1963</span>        .&lt;GetCompletedSnapshotsRequest, GetCompletedSnapshotsResponse, List&lt;SnapshotDescription&gt;&gt;<a name="line.1963"></a>
-<span class="sourceLineNo">1964</span>        call(controller, stub, GetCompletedSnapshotsRequest.newBuilder().build(),<a name="line.1964"></a>
-<span class="sourceLineNo">1965</span>          (s, c, req, done) -&gt; s.getCompletedSnapshots(c, req, done),<a name="line.1965"></a>
-<span class="sourceLineNo">1966</span>          resp -&gt; ProtobufUtil.toSnapshotDescriptionList(resp, pattern)))<a name="line.1966"></a>
-<span class="sourceLineNo">1967</span>        .call();<a name="line.1967"></a>
-<span class="sourceLineNo">1968</span>  }<a name="line.1968"></a>
-<span class="sourceLineNo">1969</span><a name="line.1969"></a>
-<span class="sourceLineNo">1970</span>  @Override<a name="line.1970"></a>
-<span class="sourceLineNo">1971</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern) {<a name="line.1971"></a>
-<span class="sourceLineNo">1972</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.1972"></a>
-<span class="sourceLineNo">1973</span>        + " If you don't specify a tableNamePattern, use listSnapshots() instead");<a name="line.1973"></a>
-<span class="sourceLineNo">1974</span>    return getCompletedSnapshots(tableNamePattern, null);<a name="line.1974"></a>
-<span class="sourceLineNo">1975</span>  }<a name="line.1975"></a>
-<span class="sourceLineNo">1976</span><a name="line.1976"></a>
-<span class="sourceLineNo">1977</span>  @Override<a name="line.1977"></a>
-<span class="sourceLineNo">1978</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern,<a name="line.1978"></a>
-<span class="sourceLineNo">1979</span>      Pattern snapshotNamePattern) {<a name="line.1979"></a>
-<span class="sourceLineNo">1980</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.1980"></a>
-<span class="sourceLineNo">1981</span>        + " If you don't specify a tableNamePattern, use listSnapshots(Pattern) instead");<a name="line.1981"></a>
-<span class="sourceLineNo">1982</span>    Preconditions.checkNotNull(snapshotNamePattern, "snapshotNamePattern is null."<a name="line.1982"></a>
-<span class="sourceLineNo">1983</span>        + " If you don't specify a snapshotNamePattern, use listTableSnapshots(Pattern) instead");<a name="line.1983"></a>
-<span class="sourceLineNo">1984</span>    return getCompletedSnapshots(tableNamePattern, snapshotNamePattern);<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>  private CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; getCompletedSnapshots(<a name="line.1987"></a>
-<span class="sourceLineNo">1988</span>      Pattern tableNamePattern, Pattern snapshotNamePattern) {<a name="line.1988"></a>
-<span class="sourceLineNo">1989</span>    CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1989"></a>
-<span class="sourceLineNo">1990</span>    addListener(listTableNames(tableNamePattern, false), (tableNames, err) -&gt; {<a name="line.1990"></a>
-<span class="sourceLineNo">1991</span>      if (err != null) {<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span>        future.completeExceptionally(err);<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>        return;<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span>      }<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span>      if (tableNames == null || tableNames.size() &lt;= 0) {<a name="line.1995"></a>
-<span class="sourceLineNo">1996</span>        future.complete(Collections.emptyList());<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span>        return;<a name="line.1997"></a>
-<span class="sourceLineNo">1998</span>      }<a name="line.1998"></a>
-<span class="sourceLineNo">1999</span>      addListener(getCompletedSnapshots(snapshotNamePattern), (snapshotDescList, err2) -&gt; {<a name="line.1999"></a>
-<span class="sourceLineNo">2000</span>        if (err2 != null) {<a name="line.2000"></a>
-<span class="sourceLineNo">2001</span>          future.completeExceptionally(err2);<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span>          return;<a name="line.2002"></a>
-<span class="sourceLineNo">2003</span>        }<a name="line.2003"></a>
-<span class="sourceLineNo">2004</span>        if (snapshotDescList == null || snapshotDescList.isEmpty()) {<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span>          future.complete(Collections.emptyList());<a name="line.2005"></a>
-<span class="sourceLineNo">2006</span>          return;<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span>        }<a name="line.2007"></a>
-<span class="sourceLineNo">2008</span>        future.complete(snapshotDescList.stream()<a name="line.2008"></a>
-<span class="sourceLineNo">2009</span>          .filter(snap -&gt; (snap != null &amp;&amp; tableNames.contains(snap.getTableName())))<a name="line.2009"></a>
-<span class="sourceLineNo">2010</span>          .collect(Collectors.toList()));<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span>      });<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span>    });<a name="line.2012"></a>
-<span class="sourceLineNo">2013</span>    return future;<a name="line.2013"></a>
-<span class="sourceLineNo">2014</span>  }<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span><a name="line.2015"></a>
-<span class="sourceLineNo">2016</span>  @Override<a name="line.2016"></a>
-<span class="sourceLineNo">2017</span>  public CompletableFuture&lt;Void&gt; deleteSnapshot(String snapshotName) {<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span>    return internalDeleteSnapshot(new SnapshotDescription(snapshotName));<a name="line.2018"></a>
-<span class="sourceLineNo">2019</span>  }<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span><a name="line.2020"></a>
-<span class="sourceLineNo">2021</span>  @Override<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span>  public CompletableFuture&lt;Void&gt; deleteSnapshots() {<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span>    return internalDeleteSnapshots(null, null);<a name="line.2023"></a>
-<span class="sourceLineNo">2024</span>  }<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span><a name="line.2025"></a>
-<span class="sourceLineNo">2026</span>  @Override<a name="line.2026"></a>
-<span class="sourceLineNo">2027</span>  public CompletableFuture&lt;Void&gt; deleteSnapshots(Pattern snapshotNamePattern) {<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span>    Preconditions.checkNotNull(snapshotNamePattern, "snapshotNamePattern is null."<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span>        + " If you don't specify a snapshotNamePattern, use deleteSnapshots() instead");<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span>    return internalDeleteSnapshots(null, snapshotNamePattern);<a name="line.2030"></a>
-<span class="sourceLineNo">2031</span>  }<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span><a name="line.2032"></a>
-<span class="sourceLineNo">2033</span>  @Override<a name="line.2033"></a>
-<span class="sourceLineNo">2034</span>  public CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern) {<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span>        + " If you don't specify a tableNamePattern, use deleteSnapshots() instead");<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span>    return internalDeleteSnapshots(tableNamePattern, null);<a name="line.2037"></a>
-<span class="sourceLineNo">2038</span>  }<a name="line.2038"></a>
-<span class="sourceLineNo">2039</span><a name="line.2039"></a>
-<span class="sourceLineNo">2040</span>  @Override<a name="line.2040"></a>
-<span class="sourceLineNo">2041</span>  public CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern,<a name="line.2041"></a>
-<span class="sourceLineNo">2042</span>      Pattern snapshotNamePattern) {<a name="line.2042"></a>
-<span class="sourceLineNo">2043</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span>        + " If you don't specify a tableNamePattern, use deleteSnapshots(Pattern) instead");<a name="line.2044"></a>
-<span class="sourceLineNo">2045</span>    Preconditions.checkNotNull(snapshotNamePattern, "snapshotNamePattern is null."<a name="line.2045"></a>
-<span class="sourceLineNo">2046</span>        + " If you don't specify a snapshotNamePattern, use deleteSnapshots(Pattern) instead");<a name="line.2046"></a>
-<span class="sourceLineNo">2047</span>    return internalDeleteSnapshots(tableNamePattern, snapshotNamePattern);<a name="line.2047"></a>
-<span class="sourceLineNo">2048</span>  }<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span><a name="line.2049"></a>
-<span class="sourceLineNo">2050</span>  private CompletableFuture&lt;Void&gt; internalDeleteSnapshots(Pattern tableNamePattern,<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span>      Pattern snapshotNamePattern) {<a name="line.2051"></a>
-<span class="sourceLineNo">2052</span>    CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshotsFuture;<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span>    if (tableNamePattern == null) {<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span>      listSnapshotsFuture = getCompletedSnapshots(snapshotNamePattern);<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span>    } else {<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span>      listSnapshotsFuture = getCompletedSnapshots(tableNamePattern, snapshotNamePattern);<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span>    }<a name="line.2057"></a>
-<span class="sourceLineNo">2058</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2058"></a>
-<span class="sourceLineNo">2059</span>    addListener(listSnapshotsFuture, ((snapshotDescriptions, err) -&gt; {<a name="line.2059"></a>
-<span class="sourceLineNo">2060</span>      if (err != null) {<a name="line.2060"></a>
-<span class="sourceLineNo">2061</span>        future.completeExceptionally(err);<a name="line.2061"></a>
-<span class="sourceLineNo">2062</span>        return;<a name="line.2062"></a>
-<span class="sourceLineNo">2063</span>      }<a name="line.2063"></a>
-<span class="sourceLineNo">2064</span>      if (snapshotDescriptions == null || snapshotDescriptions.isEmpty()) {<a name="line.2064"></a>
-<span class="sourceLineNo">2065</span>        future.complete(null);<a name="line.2065"></a>
-<span class="sourceLineNo">2066</span>        return;<a name="line.2066"></a>
-<span class="sourceLineNo">2067</span>      }<a name="line.2067"></a>
-<span class="sourceLineNo">2068</span>      addListener(CompletableFuture.allOf(snapshotDescriptions.stream()<a name="line.2068"></a>
-<span class="sourceLineNo">2069</span>        .map(this::internalDeleteSnapshot).toArray(CompletableFuture[]::new)), (v, e) -&gt; {<a name="line.2069"></a>
-<span class="sourceLineNo">2070</span>          if (e != null) {<a name="line.2070"></a>
-<span class="sourceLineNo">2071</span>            future.completeExceptionally(e);<a name="line.2071"></a>
-<span class="sourceLineNo">2072</span>          } else {<a name="line.2072"></a>
-<span class="sourceLineNo">2073</span>            future.complete(v);<a name="line.2073"></a>
-<span class="sourceLineNo">2074</span>          }<a name="line.2074"></a>
-<span class="sourceLineNo">2075</span>        });<a name="line.2075"></a>
-<span class="sourceLineNo">2076</span>    }));<a name="line.2076"></a>
-<span class="sourceLineNo">2077</span>    return future;<a name="line.2077"></a>
-<span class="sourceLineNo">2078</span>  }<a name="line.2078"></a>
-<span class="sourceLineNo">2079</span><a name="line.2079"></a>
-<span class="sourceLineNo">2080</span>  private CompletableFuture&lt;Void&gt; internalDeleteSnapshot(SnapshotDescription snapshot) {<a name="line.2080"></a>
-<span class="sourceLineNo">2081</span>    return this<a name="line.2081"></a>
-<span class="sourceLineNo">2082</span>        .&lt;Void&gt; newMasterCaller()<a name="line.2082"></a>
-<span class="sourceLineNo">2083</span>        .action(<a name="line.2083"></a>
-<span class="sourceLineNo">2084</span>          (controller, stub) -&gt; this.&lt;DeleteSnapshotRequest, DeleteSnapshotResponse, Void&gt; call(<a name="line.2084"></a>
-<span class="sourceLineNo">2085</span>            controller,<a name="line.2085"></a>
-<span class="sourceLineNo">2086</span>            stub,<a name="line.2086"></a>
-<span class="sourceLineNo">2087</span>            DeleteSnapshotRequest.newBuilder()<a name="line.2087"></a>
-<span class="sourceLineNo">2088</span>                .setSnapshot(ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot)).build(), (s, c,<a name="line.2088"></a>
-<span class="sourceLineNo">2089</span>                req, done) -&gt; s.deleteSnapshot(c, req, done), resp -&gt; null)).call();<a name="line.2089"></a>
-<span class="sourceLineNo">2090</span>  }<a name="line.2090"></a>
-<span class="sourceLineNo">2091</span><a name="line.2091"></a>
-<span class="sourceLineNo">2092</span>  @Override<a name="line.2092"></a>
-<span class="sourceLineNo">2093</span>  public CompletableFuture&lt;Void&gt; execProcedure(String signature, String instance,<a name="line.2093"></a>
-<span class="sourceLineNo">2094</span>      Map&lt;String, String&gt; props) {<a name="line.2094"></a>
-<span class="sourceLineNo">2095</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2095"></a>
-<span class="sourceLineNo">2096</span>    ProcedureDescription procDesc =<a name="line.2096"></a>
-<span class="sourceLineNo">2097</span>      ProtobufUtil.buildProcedureDescription(signature, instance, props);<a name="line.2097"></a>
-<span class="sourceLineNo">2098</span>    addListener(this.&lt;Long&gt; newMasterCaller()<a name="line.2098"></a>
-<span class="sourceLineNo">2099</span>      .action((controller, stub) -&gt; this.&lt;ExecProcedureRequest, ExecProcedureResponse, Long&gt; call(<a name="line.2099"></a>
-<span class="sourceLineNo">2100</span>        controller, stub, ExecProcedureRequest.newBuilder().setProcedure(procDesc).build(),<a name="line.2100"></a>
-<span class="sourceLineNo">2101</span>        (s, c, req, done) -&gt; s.execProcedure(c, req, done), resp -&gt; resp.getExpectedTimeout()))<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>      .call(), (expectedTimeout, err) -&gt; {<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span>        if (err != null) {<a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>          future.completeExceptionally(err);<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>          return;<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>        }<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>        TimerTask pollingTask = new TimerTask() {<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>          int tries = 0;<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>          long endTime = startTime + expectedTimeout;<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>          long maxPauseTime = expectedTimeout / maxAttempts;<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span><a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>          @Override<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>          public void run(Timeout timeout) throws Exception {<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>            if (EnvironmentEdgeManager.currentTime() &lt; endTime) {<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>              addListener(isProcedureFinished(signature, instance, props), (done, err2) -&gt; {<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span>                if (err2 != null) {<a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>                  future.completeExceptionally(err2);<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>                  return;<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>                }<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>                if (done) {<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>                  future.complete(null);<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>                } else {<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>                  // retry again after pauseTime.<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span>                  long pauseTime =<a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>                    ConnectionUtils.getPauseTime(TimeUnit.NANOSECONDS.toMillis(pauseNs), ++tries);<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>                  pauseTime = Math.min(pauseTime, maxPauseTime);<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>                  AsyncConnectionImpl.RETRY_TIMER.newTimeout(this, pauseTime,<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>                    TimeUnit.MICROSECONDS);<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>                }<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>              });<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>            } else {<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>              future.completeExceptionally(new IOException("Procedure '" + signature + " : " +<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>                instance + "' wasn't completed in expectedTime:" + expectedTimeout + " ms"));<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>        };<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>        // Queue the polling task into RETRY_TIMER to poll procedure state asynchronously.<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span>        AsyncConnectionImpl.RETRY_TIMER.newTimeout(pollingTask, 1, TimeUnit.MILLISECONDS);<a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>      });<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    return future;<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>  }<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span><a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>  @Override<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>  public CompletableFuture&lt;byte[]&gt; execProcedureWithReturn(String signature, String instance,<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>      Map&lt;String, String&gt; props) {<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>    ProcedureDescription proDesc =<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span>        ProtobufUtil.buildProcedureDescription(signature, instance, props);<a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>    return this.&lt;byte[]&gt; newMasterCaller()<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>        .action(<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>          (controller, stub) -&gt; this.&lt;ExecProcedureRequest, ExecProcedureResponse, byte[]&gt; call(<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span>            controller, stub, ExecProcedureRequest.newBuilder().setProcedure(proDesc).build(),<a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>            (s, c, req, done) -&gt; s.execProcedureWithRet(c, req, done),<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>            resp -&gt; resp.hasReturnData() ? resp.getReturnData().toByteArray() : null))<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>        .call();<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  }<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span><a name="line.2157"></a>
-<span class="sourceLineNo">2158</span>  @Override<a name="line.2158"></a>
-<span class="sourceLineNo">2159</span>  public CompletableFuture&lt;Boolean&gt; isProcedureFinished(String signature, String instance,<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>      Map&lt;String, String&gt; props) {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    ProcedureDescription proDesc =<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>        ProtobufUtil.buildProcedureDescription(signature, instance, props);<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span>    return this.&lt;Boolean&gt; newMasterCaller()<a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>        .action((controller, stub) -&gt; this<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>            .&lt;IsProcedureDoneRequest, IsProcedureDoneResponse, Boolean&gt; call(controller, stub,<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>              IsProcedureDoneRequest.newBuilder().setProcedure(proDesc).build(),<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>              (s, c, req, done) -&gt; s.isProcedureDone(c, req, done), resp -&gt; resp.getDone()))<a name="line.2167"></a>
+<span class="sourceLineNo">1796</span>  public CompletableFuture&lt;Boolean&gt; isSnapshotFinished(SnapshotDescription snapshot) {<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span>    return this<a name="line.1797"></a>
+<span class="sourceLineNo">1798</span>        .&lt;Boolean&gt; newMasterCaller()<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span>        .action(<a name="line.1799"></a>
+<span class="sourceLineNo">1800</span>          (controller, stub) -&gt; this.&lt;IsSnapshotDoneRequest, IsSnapshotDoneResponse, Boolean&gt; call(<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span>            controller,<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span>            stub,<a name="line.1802"></a>
+<span class="sourceLineNo">1803</span>            IsSnapshotDoneRequest.newBuilder()<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span>                .setSnapshot(ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot)).build(), (s, c,<a name="line.1804"></a>
+<span class="sourceLineNo">1805</span>                req, done) -&gt; s.isSnapshotDone(c, req, done), resp -&gt; resp.getDone())).call();<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>  @Override<a name="line.1808"></a>
+<span class="sourceLineNo">1809</span>  public CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName) {<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span>    boolean takeFailSafeSnapshot = this.connection.getConfiguration().getBoolean(<a name="line.1810"></a>
+<span class="sourceLineNo">1811</span>      HConstants.SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT,<a name="line.1811"></a>
+<span class="sourceLineNo">1812</span>      HConstants.DEFAULT_SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT);<a name="line.1812"></a>
+<span class="sourceLineNo">1813</span>    return restoreSnapshot(snapshotName, takeFailSafeSnapshot);<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>  @Override<a name="line.1816"></a>
+<span class="sourceLineNo">1817</span>  public CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName,<a name="line.1817"></a>
+<span class="sourceLineNo">1818</span>      boolean takeFailSafeSnapshot) {<a name="line.1818"></a>
+<span class="sourceLineNo">1819</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1819"></a>
+<span class="sourceLineNo">1820</span>    addListener(listSnapshots(Pattern.compile(snapshotName)), (snapshotDescriptions, err) -&gt; {<a name="line.1820"></a>
+<span class="sourceLineNo">1821</span>      if (err != null) {<a name="line.1821"></a>
+<span class="sourceLineNo">1822</span>        future.completeExceptionally(err);<a name="line.1822"></a>
+<span class="sourceLineNo">1823</span>        return;<a name="line.1823"></a>
+<span class="sourceLineNo">1824</span>      }<a name="line.1824"></a>
+<span class="sourceLineNo">1825</span>      TableName tableName = null;<a name="line.1825"></a>
+<span class="sourceLineNo">1826</span>      if (snapshotDescriptions != null &amp;&amp; !snapshotDescriptions.isEmpty()) {<a name="line.1826"></a>
+<span class="sourceLineNo">1827</span>        for (SnapshotDescription snap : snapshotDescriptions) {<a name="line.1827"></a>
+<span class="sourceLineNo">1828</span>          if (snap.getName().equals(snapshotName)) {<a name="line.1828"></a>
+<span class="sourceLineNo">1829</span>            tableName = snap.getTableName();<a name="line.1829"></a>
+<span class="sourceLineNo">1830</span>            break;<a name="line.1830"></a>
+<span class="sourceLineNo">1831</span>          }<a name="line.1831"></a>
+<span class="sourceLineNo">1832</span>        }<a name="line.1832"></a>
+<span class="sourceLineNo">1833</span>      }<a name="line.1833"></a>
+<span class="sourceLineNo">1834</span>      if (tableName == null) {<a name="line.1834"></a>
+<span class="sourceLineNo">1835</span>        future.completeExceptionally(new RestoreSnapshotException(<a name="line.1835"></a>
+<span class="sourceLineNo">1836</span>          "Unable to find the table name for snapshot=" + snapshotName));<a name="line.1836"></a>
+<span class="sourceLineNo">1837</span>        return;<a name="line.1837"></a>
+<span class="sourceLineNo">1838</span>      }<a name="line.1838"></a>
+<span class="sourceLineNo">1839</span>      final TableName finalTableName = tableName;<a name="line.1839"></a>
+<span class="sourceLineNo">1840</span>      addListener(tableExists(finalTableName), (exists, err2) -&gt; {<a name="line.1840"></a>
+<span class="sourceLineNo">1841</span>        if (err2 != null) {<a name="line.1841"></a>
+<span class="sourceLineNo">1842</span>          future.completeExceptionally(err2);<a name="line.1842"></a>
+<span class="sourceLineNo">1843</span>        } else if (!exists) {<a name="line.1843"></a>
+<span class="sourceLineNo">1844</span>          // if table does not exist, then just clone snapshot into new table.<a name="line.1844"></a>
+<span class="sourceLineNo">1845</span>          completeConditionalOnFuture(future,<a name="line.1845"></a>
+<span class="sourceLineNo">1846</span>            internalRestoreSnapshot(snapshotName, finalTableName));<a name="line.1846"></a>
+<span class="sourceLineNo">1847</span>        } else {<a name="line.1847"></a>
+<span class="sourceLineNo">1848</span>          addListener(isTableDisabled(finalTableName), (disabled, err4) -&gt; {<a name="line.1848"></a>
+<span class="sourceLineNo">1849</span>            if (err4 != null) {<a name="line.1849"></a>
+<span class="sourceLineNo">1850</span>              future.completeExceptionally(err4);<a name="line.1850"></a>
+<span class="sourceLineNo">1851</span>            } else if (!disabled) {<a name="line.1851"></a>
+<span class="sourceLineNo">1852</span>              future.completeExceptionally(new TableNotDisabledException(finalTableName));<a name="line.1852"></a>
+<span class="sourceLineNo">1853</span>            } else {<a name="line.1853"></a>
+<span class="sourceLineNo">1854</span>              completeConditionalOnFuture(future,<a name="line.1854"></a>
+<span class="sourceLineNo">1855</span>                restoreSnapshot(snapshotName, finalTableName, takeFailSafeSnapshot));<a name="line.1855"></a>
+<span class="sourceLineNo">1856</span>            }<a name="line.1856"></a>
+<span class="sourceLineNo">1857</span>          });<a name="line.1857"></a>
+<span class="sourceLineNo">1858</span>        }<a name="line.1858"></a>
+<span class="sourceLineNo">1859</span>      });<a name="line.1859"></a>
+<span class="sourceLineNo">1860</span>    });<a name="line.1860"></a>
+<span class="sourceLineNo">1861</span>    return future;<a name="line.1861"></a>
+<span class="sourceLineNo">1862</span>  }<a name="line.1862"></a>
+<span class="sourceLineNo">1863</span><a name="line.1863"></a>
+<span class="sourceLineNo">1864</span>  private CompletableFuture&lt;Void&gt; restoreSnapshot(String snapshotName, TableName tableName,<a name="line.1864"></a>
+<span class="sourceLineNo">1865</span>      boolean takeFailSafeSnapshot) {<a name="line.1865"></a>
+<span class="sourceLineNo">1866</span>    if (takeFailSafeSnapshot) {<a name="line.1866"></a>
+<span class="sourceLineNo">1867</span>      CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1867"></a>
+<span class="sourceLineNo">1868</span>      // Step.1 Take a snapshot of the current state<a name="line.1868"></a>
+<span class="sourceLineNo">1869</span>      String failSafeSnapshotSnapshotNameFormat =<a name="line.1869"></a>
+<span class="sourceLineNo">1870</span>        this.connection.getConfiguration().get(HConstants.SNAPSHOT_RESTORE_FAILSAFE_NAME,<a name="line.1870"></a>
+<span class="sourceLineNo">1871</span>          HConstants.DEFAULT_SNAPSHOT_RESTORE_FAILSAFE_NAME);<a name="line.1871"></a>
+<span class="sourceLineNo">1872</span>      final String failSafeSnapshotSnapshotName =<a name="line.1872"></a>
+<span class="sourceLineNo">1873</span>        failSafeSnapshotSnapshotNameFormat.replace("{snapshot.name}", snapshotName)<a name="line.1873"></a>
+<span class="sourceLineNo">1874</span>          .replace("{table.name}", tableName.toString().replace(TableName.NAMESPACE_DELIM, '.'))<a name="line.1874"></a>
+<span class="sourceLineNo">1875</span>          .replace("{restore.timestamp}", String.valueOf(EnvironmentEdgeManager.currentTime()));<a name="line.1875"></a>
+<span class="sourceLineNo">1876</span>      LOG.info("Taking restore-failsafe snapshot: " + failSafeSnapshotSnapshotName);<a name="line.1876"></a>
+<span class="sourceLineNo">1877</span>      addListener(snapshot(failSafeSnapshotSnapshotName, tableName), (ret, err) -&gt; {<a name="line.1877"></a>
+<span class="sourceLineNo">1878</span>        if (err != null) {<a name="line.1878"></a>
+<span class="sourceLineNo">1879</span>          future.completeExceptionally(err);<a name="line.1879"></a>
+<span class="sourceLineNo">1880</span>        } else {<a name="line.1880"></a>
+<span class="sourceLineNo">1881</span>          // Step.2 Restore snapshot<a name="line.1881"></a>
+<span class="sourceLineNo">1882</span>          addListener(internalRestoreSnapshot(snapshotName, tableName), (void2, err2) -&gt; {<a name="line.1882"></a>
+<span class="sourceLineNo">1883</span>            if (err2 != null) {<a name="line.1883"></a>
+<span class="sourceLineNo">1884</span>              // Step.3.a Something went wrong during the restore and try to rollback.<a name="line.1884"></a>
+<span class="sourceLineNo">1885</span>              addListener(internalRestoreSnapshot(failSafeSnapshotSnapshotName, tableName),<a name="line.1885"></a>
+<span class="sourceLineNo">1886</span>                (void3, err3) -&gt; {<a name="line.1886"></a>
+<span class="sourceLineNo">1887</span>                  if (err3 != null) {<a name="line.1887"></a>
+<span class="sourceLineNo">1888</span>                    future.completeExceptionally(err3);<a name="line.1888"></a>
+<span class="sourceLineNo">1889</span>                  } else {<a name="line.1889"></a>
+<span class="sourceLineNo">1890</span>                    String msg =<a name="line.1890"></a>
+<span class="sourceLineNo">1891</span>                      "Restore snapshot=" + snapshotName + " failed. Rollback to snapshot=" +<a name="line.1891"></a>
+<span class="sourceLineNo">1892</span>                        failSafeSnapshotSnapshotName + " succeeded.";<a name="line.1892"></a>
+<span class="sourceLineNo">1893</span>                    future.completeExceptionally(new RestoreSnapshotException(msg));<a name="line.1893"></a>
+<span class="sourceLineNo">1894</span>                  }<a name="line.1894"></a>
+<span class="sourceLineNo">1895</span>                });<a name="line.1895"></a>
+<span class="sourceLineNo">1896</span>            } else {<a name="line.1896"></a>
+<span class="sourceLineNo">1897</span>              // Step.3.b If the restore is succeeded, delete the pre-restore snapshot.<a name="line.1897"></a>
+<span class="sourceLineNo">1898</span>              LOG.info("Deleting restore-failsafe snapshot: " + failSafeSnapshotSnapshotName);<a name="line.1898"></a>
+<span class="sourceLineNo">1899</span>              addListener(deleteSnapshot(failSafeSnapshotSnapshotName), (ret3, err3) -&gt; {<a name="line.1899"></a>
+<span class="sourceLineNo">1900</span>                if (err3 != null) {<a name="line.1900"></a>
+<span class="sourceLineNo">1901</span>                  LOG.error(<a name="line.1901"></a>
+<span class="sourceLineNo">1902</span>                    "Unable to remove the failsafe snapshot: " + failSafeSnapshotSnapshotName,<a name="line.1902"></a>
+<span class="sourceLineNo">1903</span>                    err3);<a name="line.1903"></a>
+<span class="sourceLineNo">1904</span>                  future.completeExceptionally(err3);<a name="line.1904"></a>
+<span class="sourceLineNo">1905</span>                } else {<a name="line.1905"></a>
+<span class="sourceLineNo">1906</span>                  future.complete(ret3);<a name="line.1906"></a>
+<span class="sourceLineNo">1907</span>                }<a name="line.1907"></a>
+<span class="sourceLineNo">1908</span>              });<a name="line.1908"></a>
+<span class="sourceLineNo">1909</span>            }<a name="line.1909"></a>
+<span class="sourceLineNo">1910</span>          });<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>      return future;<a name="line.1913"></a>
+<span class="sourceLineNo">1914</span>    } else {<a name="line.1914"></a>
+<span class="sourceLineNo">1915</span>      return internalRestoreSnapshot(snapshotName, tableName);<a name="line.1915"></a>
+<span class="sourceLineNo">1916</span>    }<a name="line.1916"></a>
+<span class="sourceLineNo">1917</span>  }<a name="line.1917"></a>
+<span class="sourceLineNo">1918</span><a name="line.1918"></a>
+<span class="sourceLineNo">1919</span>  private &lt;T&gt; void completeConditionalOnFuture(CompletableFuture&lt;T&gt; dependentFuture,<a name="line.1919"></a>
+<span class="sourceLineNo">1920</span>      CompletableFuture&lt;T&gt; parentFuture) {<a name="line.1920"></a>
+<span class="sourceLineNo">1921</span>    addListener(parentFuture, (res, err) -&gt; {<a name="line.1921"></a>
+<span class="sourceLineNo">1922</span>      if (err != null) {<a name="line.1922"></a>
+<span class="sourceLineNo">1923</span>        dependentFuture.completeExceptionally(err);<a name="line.1923"></a>
+<span class="sourceLineNo">1924</span>      } else {<a name="line.1924"></a>
+<span class="sourceLineNo">1925</span>        dependentFuture.complete(res);<a name="line.1925"></a>
+<span class="sourceLineNo">1926</span>      }<a name="line.1926"></a>
+<span class="sourceLineNo">1927</span>    });<a name="line.1927"></a>
+<span class="sourceLineNo">1928</span>  }<a name="line.1928"></a>
+<span class="sourceLineNo">1929</span><a name="line.1929"></a>
+<span class="sourceLineNo">1930</span>  @Override<a name="line.1930"></a>
+<span class="sourceLineNo">1931</span>  public CompletableFuture&lt;Void&gt; cloneSnapshot(String snapshotName, TableName tableName) {<a name="line.1931"></a>
+<span class="sourceLineNo">1932</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.1932"></a>
+<span class="sourceLineNo">1933</span>    addListener(tableExists(tableName), (exists, err) -&gt; {<a name="line.1933"></a>
+<span class="sourceLineNo">1934</span>      if (err != null) {<a name="line.1934"></a>
+<span class="sourceLineNo">1935</span>        future.completeExceptionally(err);<a name="line.1935"></a>
+<span class="sourceLineNo">1936</span>      } else if (exists) {<a name="line.1936"></a>
+<span class="sourceLineNo">1937</span>        future.completeExceptionally(new TableExistsException(tableName));<a name="line.1937"></a>
+<span class="sourceLineNo">1938</span>      } else {<a name="line.1938"></a>
+<span class="sourceLineNo">1939</span>        completeConditionalOnFuture(future, internalRestoreSnapshot(snapshotName, tableName));<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>    return future;<a name="line.1942"></a>
+<span class="sourceLineNo">1943</span>  }<a name="line.1943"></a>
+<span class="sourceLineNo">1944</span><a name="line.1944"></a>
+<span class="sourceLineNo">1945</span>  private CompletableFuture&lt;Void&gt; internalRestoreSnapshot(String snapshotName, TableName tableName) {<a name="line.1945"></a>
+<span class="sourceLineNo">1946</span>    SnapshotProtos.SnapshotDescription snapshot = SnapshotProtos.SnapshotDescription.newBuilder()<a name="line.1946"></a>
+<span class="sourceLineNo">1947</span>        .setName(snapshotName).setTable(tableName.getNameAsString()).build();<a name="line.1947"></a>
+<span class="sourceLineNo">1948</span>    try {<a name="line.1948"></a>
+<span class="sourceLineNo">1949</span>      ClientSnapshotDescriptionUtils.assertSnapshotRequestIsValid(snapshot);<a name="line.1949"></a>
+<span class="sourceLineNo">1950</span>    } catch (IllegalArgumentException e) {<a name="line.1950"></a>
+<span class="sourceLineNo">1951</span>      return failedFuture(e);<a name="line.1951"></a>
+<span class="sourceLineNo">1952</span>    }<a name="line.1952"></a>
+<span class="sourceLineNo">1953</span>    return waitProcedureResult(this<a name="line.1953"></a>
+<span class="sourceLineNo">1954</span>        .&lt;Long&gt; newMasterCaller()<a name="line.1954"></a>
+<span class="sourceLineNo">1955</span>        .action(<a name="line.1955"></a>
+<span class="sourceLineNo">1956</span>          (controller, stub) -&gt; this.&lt;RestoreSnapshotRequest, RestoreSnapshotResponse, Long&gt; call(<a name="line.1956"></a>
+<span class="sourceLineNo">1957</span>            controller, stub, RestoreSnapshotRequest.newBuilder().setSnapshot(snapshot)<a name="line.1957"></a>
+<span class="sourceLineNo">1958</span>                .setNonceGroup(ng.getNonceGroup()).setNonce(ng.newNonce()).build(), (s, c, req,<a name="line.1958"></a>
+<span class="sourceLineNo">1959</span>                done) -&gt; s.restoreSnapshot(c, req, done), (resp) -&gt; resp.getProcId())).call());<a name="line.1959"></a>
+<span class="sourceLineNo">1960</span>  }<a name="line.1960"></a>
+<span class="sourceLineNo">1961</span><a name="line.1961"></a>
+<span class="sourceLineNo">1962</span>  @Override<a name="line.1962"></a>
+<span class="sourceLineNo">1963</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots() {<a name="line.1963"></a>
+<span class="sourceLineNo">1964</span>    return getCompletedSnapshots(null);<a name="line.1964"></a>
+<span class="sourceLineNo">1965</span>  }<a name="line.1965"></a>
+<span class="sourceLineNo">1966</span><a name="line.1966"></a>
+<span class="sourceLineNo">1967</span>  @Override<a name="line.1967"></a>
+<span class="sourceLineNo">1968</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshots(Pattern pattern) {<a name="line.1968"></a>
+<span class="sourceLineNo">1969</span>    Preconditions.checkNotNull(pattern,<a name="line.1969"></a>
+<span class="sourceLineNo">1970</span>      "pattern is null. If you don't specify a pattern, use listSnapshots() instead");<a name="line.1970"></a>
+<span class="sourceLineNo">1971</span>    return getCompletedSnapshots(pattern);<a name="line.1971"></a>
+<span class="sourceLineNo">1972</span>  }<a name="line.1972"></a>
+<span class="sourceLineNo">1973</span><a name="line.1973"></a>
+<span class="sourceLineNo">1974</span>  private CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; getCompletedSnapshots(Pattern pattern) {<a name="line.1974"></a>
+<span class="sourceLineNo">1975</span>    return this.&lt;List&lt;SnapshotDescription&gt;&gt; newMasterCaller().action((controller, stub) -&gt; this<a name="line.1975"></a>
+<span class="sourceLineNo">1976</span>        .&lt;GetCompletedSnapshotsRequest, GetCompletedSnapshotsResponse, List&lt;SnapshotDescription&gt;&gt;<a name="line.1976"></a>
+<span class="sourceLineNo">1977</span>        call(controller, stub, GetCompletedSnapshotsRequest.newBuilder().build(),<a name="line.1977"></a>
+<span class="sourceLineNo">1978</span>          (s, c, req, done) -&gt; s.getCompletedSnapshots(c, req, done),<a name="line.1978"></a>
+<span class="sourceLineNo">1979</span>          resp -&gt; ProtobufUtil.toSnapshotDescriptionList(resp, pattern)))<a name="line.1979"></a>
+<span class="sourceLineNo">1980</span>        .call();<a name="line.1980"></a>
+<span class="sourceLineNo">1981</span>  }<a name="line.1981"></a>
+<span class="sourceLineNo">1982</span><a name="line.1982"></a>
+<span class="sourceLineNo">1983</span>  @Override<a name="line.1983"></a>
+<span class="sourceLineNo">1984</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern) {<a name="line.1984"></a>
+<span class="sourceLineNo">1985</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.1985"></a>
+<span class="sourceLineNo">1986</span>        + " If you don't specify a tableNamePattern, use listSnapshots() instead");<a name="line.1986"></a>
+<span class="sourceLineNo">1987</span>    return getCompletedSnapshots(tableNamePattern, null);<a name="line.1987"></a>
+<span class="sourceLineNo">1988</span>  }<a name="line.1988"></a>
+<span class="sourceLineNo">1989</span><a name="line.1989"></a>
+<span class="sourceLineNo">1990</span>  @Override<a name="line.1990"></a>
+<span class="sourceLineNo">1991</span>  public CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listTableSnapshots(Pattern tableNamePattern,<a name="line.1991"></a>
+<span class="sourceLineNo">1992</span>      Pattern snapshotNamePattern) {<a name="line.1992"></a>
+<span class="sourceLineNo">1993</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.1993"></a>
+<span class="sourceLineNo">1994</span>        + " If you don't specify a tableNamePattern, use listSnapshots(Pattern) instead");<a name="line.1994"></a>
+<span class="sourceLineNo">1995</span>    Preconditions.checkNotNull(snapshotNamePattern, "snapshotNamePattern is null."<a name="line.1995"></a>
+<span class="sourceLineNo">1996</span>        + " If you don't specify a snapshotNamePattern, use listTableSnapshots(Pattern) instead");<a name="line.1996"></a>
+<span class="sourceLineNo">1997</span>    return getCompletedSnapshots(tableNamePattern, snapshotNamePattern);<a name="line.1997"></a>
+<span class="sourceLineNo">1998</span>  }<a name="line.1998"></a>
+<span class="sourceLineNo">1999</span><a name="line.1999"></a>
+<span class="sourceLineNo">2000</span>  private CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; getCompletedSnapshots(<a name="line.2000"></a>
+<span class="sourceLineNo">2001</span>      Pattern tableNamePattern, Pattern snapshotNamePattern) {<a name="line.2001"></a>
+<span class="sourceLineNo">2002</span>    CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2002"></a>
+<span class="sourceLineNo">2003</span>    addListener(listTableNames(tableNamePattern, false), (tableNames, err) -&gt; {<a name="line.2003"></a>
+<span class="sourceLineNo">2004</span>      if (err != null) {<a name="line.2004"></a>
+<span class="sourceLineNo">2005</span>        future.completeExceptionally(err);<a name="line.2005"></a>
+<span class="sourceLineNo">2006</span>        return;<a name="line.2006"></a>
+<span class="sourceLineNo">2007</span>      }<a name="line.2007"></a>
+<span class="sourceLineNo">2008</span>      if (tableNames == null || tableNames.size() &lt;= 0) {<a name="line.2008"></a>
+<span class="sourceLineNo">2009</span>        future.complete(Collections.emptyList());<a name="line.2009"></a>
+<span class="sourceLineNo">2010</span>        return;<a name="line.2010"></a>
+<span class="sourceLineNo">2011</span>      }<a name="line.2011"></a>
+<span class="sourceLineNo">2012</span>      addListener(getCompletedSnapshots(snapshotNamePattern), (snapshotDescList, err2) -&gt; {<a name="line.2012"></a>
+<span class="sourceLineNo">2013</span>        if (err2 != null) {<a name="line.2013"></a>
+<span class="sourceLineNo">2014</span>          future.completeExceptionally(err2);<a name="line.2014"></a>
+<span class="sourceLineNo">2015</span>          return;<a name="line.2015"></a>
+<span class="sourceLineNo">2016</span>        }<a name="line.2016"></a>
+<span class="sourceLineNo">2017</span>        if (snapshotDescList == null || snapshotDescList.isEmpty()) {<a name="line.2017"></a>
+<span class="sourceLineNo">2018</span>          future.complete(Collections.emptyList());<a name="line.2018"></a>
+<span class="sourceLineNo">2019</span>          return;<a name="line.2019"></a>
+<span class="sourceLineNo">2020</span>        }<a name="line.2020"></a>
+<span class="sourceLineNo">2021</span>        future.complete(snapshotDescList.stream()<a name="line.2021"></a>
+<span class="sourceLineNo">2022</span>          .filter(snap -&gt; (snap != null &amp;&amp; tableNames.contains(snap.getTableName())))<a name="line.2022"></a>
+<span class="sourceLineNo">2023</span>          .collect(Collectors.toList()));<a name="line.2023"></a>
+<span class="sourceLineNo">2024</span>      });<a name="line.2024"></a>
+<span class="sourceLineNo">2025</span>    });<a name="line.2025"></a>
+<span class="sourceLineNo">2026</span>    return future;<a name="line.2026"></a>
+<span class="sourceLineNo">2027</span>  }<a name="line.2027"></a>
+<span class="sourceLineNo">2028</span><a name="line.2028"></a>
+<span class="sourceLineNo">2029</span>  @Override<a name="line.2029"></a>
+<span class="sourceLineNo">2030</span>  public CompletableFuture&lt;Void&gt; deleteSnapshot(String snapshotName) {<a name="line.2030"></a>
+<span class="sourceLineNo">2031</span>    return internalDeleteSnapshot(new SnapshotDescription(snapshotName));<a name="line.2031"></a>
+<span class="sourceLineNo">2032</span>  }<a name="line.2032"></a>
+<span class="sourceLineNo">2033</span><a name="line.2033"></a>
+<span class="sourceLineNo">2034</span>  @Override<a name="line.2034"></a>
+<span class="sourceLineNo">2035</span>  public CompletableFuture&lt;Void&gt; deleteSnapshots() {<a name="line.2035"></a>
+<span class="sourceLineNo">2036</span>    return internalDeleteSnapshots(null, null);<a name="line.2036"></a>
+<span class="sourceLineNo">2037</span>  }<a name="line.2037"></a>
+<span class="sourceLineNo">2038</span><a name="line.2038"></a>
+<span class="sourceLineNo">2039</span>  @Override<a name="line.2039"></a>
+<span class="sourceLineNo">2040</span>  public CompletableFuture&lt;Void&gt; deleteSnapshots(Pattern snapshotNamePattern) {<a name="line.2040"></a>
+<span class="sourceLineNo">2041</span>    Preconditions.checkNotNull(snapshotNamePattern, "snapshotNamePattern is null."<a name="line.2041"></a>
+<span class="sourceLineNo">2042</span>        + " If you don't specify a snapshotNamePattern, use deleteSnapshots() instead");<a name="line.2042"></a>
+<span class="sourceLineNo">2043</span>    return internalDeleteSnapshots(null, snapshotNamePattern);<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>  @Override<a name="line.2046"></a>
+<span class="sourceLineNo">2047</span>  public CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern) {<a name="line.2047"></a>
+<span class="sourceLineNo">2048</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.2048"></a>
+<span class="sourceLineNo">2049</span>        + " If you don't specify a tableNamePattern, use deleteSnapshots() instead");<a name="line.2049"></a>
+<span class="sourceLineNo">2050</span>    return internalDeleteSnapshots(tableNamePattern, null);<a name="line.2050"></a>
+<span class="sourceLineNo">2051</span>  }<a name="line.2051"></a>
+<span class="sourceLineNo">2052</span><a name="line.2052"></a>
+<span class="sourceLineNo">2053</span>  @Override<a name="line.2053"></a>
+<span class="sourceLineNo">2054</span>  public CompletableFuture&lt;Void&gt; deleteTableSnapshots(Pattern tableNamePattern,<a name="line.2054"></a>
+<span class="sourceLineNo">2055</span>      Pattern snapshotNamePattern) {<a name="line.2055"></a>
+<span class="sourceLineNo">2056</span>    Preconditions.checkNotNull(tableNamePattern, "tableNamePattern is null."<a name="line.2056"></a>
+<span class="sourceLineNo">2057</span>        + " If you don't specify a tableNamePattern, use deleteSnapshots(Pattern) instead");<a name="line.2057"></a>
+<span class="sourceLineNo">2058</span>    Preconditions.checkNotNull(snapshotNamePattern, "snapshotNamePattern is null."<a name="line.2058"></a>
+<span class="sourceLineNo">2059</span>        + " If you don't specify a snapshotNamePattern, use deleteSnapshots(Pattern) instead");<a name="line.2059"></a>
+<span class="sourceLineNo">2060</span>    return internalDeleteSnapshots(tableNamePattern, snapshotNamePattern);<a name="line.2060"></a>
+<span class="sourceLineNo">2061</span>  }<a name="line.2061"></a>
+<span class="sourceLineNo">2062</span><a name="line.2062"></a>
+<span class="sourceLineNo">2063</span>  private CompletableFuture&lt;Void&gt; internalDeleteSnapshots(Pattern tableNamePattern,<a name="line.2063"></a>
+<span class="sourceLineNo">2064</span>      Pattern snapshotNamePattern) {<a name="line.2064"></a>
+<span class="sourceLineNo">2065</span>    CompletableFuture&lt;List&lt;SnapshotDescription&gt;&gt; listSnapshotsFuture;<a name="line.2065"></a>
+<span class="sourceLineNo">2066</span>    if (tableNamePattern == null) {<a name="line.2066"></a>
+<span class="sourceLineNo">2067</span>      listSnapshotsFuture = getCompletedSnapshots(snapshotNamePattern);<a name="line.2067"></a>
+<span class="sourceLineNo">2068</span>    } else {<a name="line.2068"></a>
+<span class="sourceLineNo">2069</span>      listSnapshotsFuture = getCompletedSnapshots(tableNamePattern, snapshotNamePattern);<a name="line.2069"></a>
+<span class="sourceLineNo">2070</span>    }<a name="line.2070"></a>
+<span class="sourceLineNo">2071</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2071"></a>
+<span class="sourceLineNo">2072</span>    addListener(listSnapshotsFuture, ((snapshotDescriptions, err) -&gt; {<a name="line.2072"></a>
+<span class="sourceLineNo">2073</span>      if (err != null) {<a name="line.2073"></a>
+<span class="sourceLineNo">2074</span>        future.completeExceptionally(err);<a name="line.2074"></a>
+<span class="sourceLineNo">2075</span>        return;<a name="line.2075"></a>
+<span class="sourceLineNo">2076</span>      }<a name="line.2076"></a>
+<span class="sourceLineNo">2077</span>      if (snapshotDescriptions == null || snapshotDescriptions.isEmpty()) {<a name="line.2077"></a>
+<span class="sourceLineNo">2078</span>        future.complete(null);<a name="line.2078"></a>
+<span class="sourceLineNo">2079</span>        return;<a name="line.2079"></a>
+<span class="sourceLineNo">2080</span>      }<a name="line.2080"></a>
+<span class="sourceLineNo">2081</span>      addListener(CompletableFuture.allOf(snapshotDescriptions.stream()<a name="line.2081"></a>
+<span class="sourceLineNo">2082</span>        .map(this::internalDeleteSnapshot).toArray(CompletableFuture[]::new)), (v, e) -&gt; {<a name="line.2082"></a>
+<span class="sourceLineNo">2083</span>          if (e != null) {<a name="line.2083"></a>
+<span class="sourceLineNo">2084</span>            future.completeExceptionally(e);<a name="line.2084"></a>
+<span class="sourceLineNo">2085</span>          } else {<a name="line.2085"></a>
+<span class="sourceLineNo">2086</span>            future.complete(v);<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>    }));<a name="line.2089"></a>
+<span class="sourceLineNo">2090</span>    return future;<a name="line.2090"></a>
+<span class="sourceLineNo">2091</span>  }<a name="line.2091"></a>
+<span class="sourceLineNo">2092</span><a name="line.2092"></a>
+<span class="sourceLineNo">2093</span>  private CompletableFuture&lt;Void&gt; internalDeleteSnapshot(SnapshotDescription snapshot) {<a name="line.2093"></a>
+<span class="sourceLineNo">2094</span>    return this<a name="line.2094"></a>
+<span class="sourceLineNo">2095</span>        .&lt;Void&gt; newMasterCaller()<a name="line.2095"></a>
+<span class="sourceLineNo">2096</span>        .action(<a name="line.2096"></a>
+<span class="sourceLineNo">2097</span>          (controller, stub) -&gt; this.&lt;DeleteSnapshotRequest, DeleteSnapshotResponse, Void&gt; call(<a name="line.2097"></a>
+<span class="sourceLineNo">2098</span>            controller,<a name="line.2098"></a>
+<span class="sourceLineNo">2099</span>            stub,<a name="line.2099"></a>
+<span class="sourceLineNo">2100</span>            DeleteSnapshotRequest.newBuilder()<a name="line.2100"></a>
+<span class="sourceLineNo">2101</span>                .setSnapshot(ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot)).build(), (s, c,<a name="line.2101"></a>
+<span class="sourceLineNo">2102</span>                req, done) -&gt; s.deleteSnapshot(c, req, done), resp -&gt; null)).call();<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>  }<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span><a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  @Override<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span>  public CompletableFuture&lt;Void&gt; execProcedure(String signature, String instance,<a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>      Map&lt;String, String&gt; props) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    ProcedureDescription procDesc =<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      ProtobufUtil.buildProcedureDescription(signature, instance, props);<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>    addListener(this.&lt;Long&gt; newMasterCaller()<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      .action((controller, stub) -&gt; this.&lt;ExecProcedureRequest, ExecProcedureResponse, Long&gt; call(<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>        controller, stub, ExecProcedureRequest.newBuilder().setProcedure(procDesc).build(),<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>        (s, c, req, done) -&gt; s.execProcedure(c, req, done), resp -&gt; resp.getExpectedTimeout()))<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      .call(), (expectedTimeout, err) -&gt; {<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>        if (err != null) {<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>          future.completeExceptionally(err);<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>          return;<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>        }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span>        TimerTask pollingTask = new TimerTask() {<a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>          int tries = 0;<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>          long endTime = startTime + expectedTimeout;<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>          long maxPauseTime = expectedTimeout / maxAttempts;<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span><a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>          @Override<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>          public void run(Timeout timeout) throws Exception {<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span>            if (EnvironmentEdgeManager.currentTime() &lt; endTime) {<a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>              addListener(isProcedureFinished(signature, instance, props), (done, err2) -&gt; {<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>                if (err2 != null) {<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>                  future.completeExceptionally(err2);<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>                  return;<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>                }<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>                if (done) {<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>                  future.complete(null);<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>                } else {<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>                  // retry again after pauseTime.<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>                  long pauseTime =<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>                    ConnectionUtils.getPauseTime(TimeUnit.NANOSECONDS.toMillis(pauseNs), ++tries);<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>                  pauseTime = Math.min(pauseTime, maxPauseTime);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>                  AsyncConnectionImpl.RETRY_TIMER.newTimeout(this, pauseTime,<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span>                    TimeUnit.MICROSECONDS);<a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>                }<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>              });<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>            } else {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>              future.completeExceptionally(new IOException("Procedure '" + signature + " : " +<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>                instance + "' wasn't completed in expectedTime:" + expectedTimeout + " ms"));<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>            }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>          }<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>        };<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span>        // Queue the polling task into RETRY_TIMER to poll procedure state asynchronously.<a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>        AsyncConnectionImpl.RETRY_TIMER.newTimeout(pollingTask, 1, TimeUnit.MILLISECONDS);<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>      });<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>    return future;<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span>  }<a name="line.2155"></a>
+<span class="sourceLineNo">2156</span><a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>  @Override<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>  public CompletableFuture&lt;byte[]&gt; execProcedureWithReturn(String signature, String instance,<a name="line.2158"></a>
+<span class="sourceLineNo">2159</span>      Map&lt;String, String&gt; props) {<a name="line.2159"></a>
+<span class="sourceLineNo">2160</span>    ProcedureDescription proDesc =<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span>        ProtobufUtil.buildProcedureDescription(signature, instance, props);<a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>    return this.&lt;byte[]&gt; newMasterCaller()<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>        .action(<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>          (controller, stub) -&gt; this.&lt;ExecProcedureRequest, ExecProcedureResponse, byte[]&gt; call(<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>            controller, stub, ExecProcedureRequest.newBuilder().setProcedure(proDesc).build(),<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span>            (s, c, req, done) -&gt; s.execProcedureWithRet(c, req, done),<a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>            resp -&gt; resp.hasReturnData() ? resp.getReturnData().toByteArray() : null))<a name="line.2167"></a>
 <span class="sourceLineNo">2168</span>        .call();<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>  @Override<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>  public CompletableFuture&lt;Boolean&gt; abortProcedure(long procId, boolean mayInterruptIfRunning) {<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    return this.&lt;Boolean&gt; newMasterCaller().action(<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>      (controller, stub) -&gt; this.&lt;AbortProcedureRequest, AbortProcedureResponse, Boolean&gt; call(<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>        controller, stub, AbortProcedureRequest.newBuilder().setProcId(procId).build(),<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>        (s, c, req, done) -&gt; s.abortProcedure(c, req, done), resp -&gt; resp.getIsProcedureAborted()))<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>        .call();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>  }<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span><a name="line.2179"></a>
-<span class="sourceLineNo">2180</span>  @Override<a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  public CompletableFuture&lt;String&gt; getProcedures() {<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>    return this<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>        .&lt;String&gt; newMasterCaller()<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>        .action(<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>          (controller, stub) -&gt; this<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>              .&lt;GetProceduresRequest, GetProceduresResponse, String&gt; call(<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span>                controller, stub, GetProceduresRequest.newBuilder().build(),<a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>                (s, c, req, done) -&gt; s.getProcedures(c, req, done),<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>                resp -&gt; ProtobufUtil.toProcedureJson(resp.getProcedureList()))).call();<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>  }<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span><a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>  @Override<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>  public CompletableFuture&lt;String&gt; getLocks() {<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    return this<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        .&lt;String&gt; newMasterCaller()<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>        .action(<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>          (controller, stub) -&gt; this.&lt;GetLocksRequest, GetLocksResponse, String&gt; call(<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>            controller, stub, GetLocksRequest.newBuilder().build(),<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span>            (s, c, req, done) -&gt; s.getLocks(c, req, done),<a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>            resp -&gt; ProtobufUtil.toLockJson(resp.getLockList()))).call();<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span><a name="line.2202"></a>
-<span class="sourceLineNo">2203</span>  @Override<a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  public CompletableFuture&lt;Void&gt; decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload) {<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>    return this.&lt;Void&gt; newMasterCaller()<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>        .action((controller, stub) -&gt; this<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>          .&lt;DecommissionRegionServersRequest, DecommissionRegionServersResponse, Void&gt; call(<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span>            controller, stub, RequestConverter.buildDecommissionRegionServersRequest(servers, offload),<a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>            (s, c, req, done) -&gt; s.decommissionRegionServers(c, req, done), resp -&gt; null))<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>        .call();<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>  }<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span><a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>  @Override<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  public CompletableFuture&lt;List&lt;ServerName&gt;&gt; listDecommissionedRegionServers() {<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>    return this.&lt;List&lt;ServerName&gt;&gt; newMasterCaller()<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>        .action((controller, stub) -&gt; this<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>          .&lt;ListDecommissionedRegionServersRequest, ListDecommissionedRegionServersResponse,<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>            List&lt;ServerName&gt;&gt; call(<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>              controller, stub, ListDecommissionedRegionServersRequest.newBuilder().build(),<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>              (s, c, req, done) -&gt; s.listDecommissionedRegionServers(c, req, done),<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>              resp -&gt; resp.getServerNameList().stream().map(ProtobufUtil::toServerName)<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>                  .collect(Collectors.toList())))<a name="line.2222"></a>
+<span class="sourceLineNo">2172</span>  public CompletableFuture&lt;Boolean&gt; isProcedureFinished(String signature, String instance,<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      Map&lt;String, String&gt; props) {<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>    ProcedureDescription proDesc =<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>        ProtobufUtil.buildProcedureDescription(signature, instance, props);<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    return this.&lt;Boolean&gt; newMasterCaller()<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>        .action((controller, stub) -&gt; this<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>            .&lt;IsProcedureDoneRequest, IsProcedureDoneResponse, Boolean&gt; call(controller, stub,<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>              IsProcedureDoneRequest.newBuilder().setProcedure(proDesc).build(),<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>              (s, c, req, done) -&gt; s.isProcedureDone(c, req, done), resp -&gt; resp.getDone()))<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>        .call();<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>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public CompletableFuture&lt;Boolean&gt; abortProcedure(long procId, boolean mayInterruptIfRunning) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    return this.&lt;Boolean&gt; newMasterCaller().action(<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>      (controller, stub) -&gt; this.&lt;AbortProcedureRequest, AbortProcedureResponse, Boolean&gt; call(<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>        controller, stub, AbortProcedureRequest.newBuilder().setProcId(procId).build(),<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>        (s, c, req, done) -&gt; s.abortProcedure(c, req, done), resp -&gt; resp.getIsProcedureAborted()))<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span>        .call();<a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  }<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span><a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>  @Override<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>  public CompletableFuture&lt;String&gt; getProcedures() {<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    return this<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        .&lt;String&gt; newMasterCaller()<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>        .action(<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>          (controller, stub) -&gt; this<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>              .&lt;GetProceduresRequest, GetProceduresResponse, String&gt; call(<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>                controller, stub, GetProceduresRequest.newBuilder().build(),<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>                (s, c, req, done) -&gt; s.getProcedures(c, req, done),<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span>                resp -&gt; ProtobufUtil.toProcedureJson(resp.getProcedureList()))).call();<a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  }<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span><a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  @Override<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span>  public CompletableFuture&lt;String&gt; getLocks() {<a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>    return this<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>        .&lt;String&gt; newMasterCaller()<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>        .action(<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>          (controller, stub) -&gt; this.&lt;GetLocksRequest, GetLocksResponse, String&gt; call(<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span>            controller, stub, GetLocksRequest.newBuilder().build(),<a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>            (s, c, req, done) -&gt; s.getLocks(c, req, done),<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>            resp -&gt; ProtobufUtil.toLockJson(resp.getLockList()))).call();<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>  }<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span><a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>  @Override<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  public CompletableFuture&lt;Void&gt; decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload) {<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>    return this.&lt;Void&gt; newMasterCaller()<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>        .action((controller, stub) -&gt; this<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>          .&lt;DecommissionRegionServersRequest, DecommissionRegionServersResponse, Void&gt; call(<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>            controller, stub, RequestConverter.buildDecommissionRegionServersRequest(servers, offload),<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>            (s, c, req, done) -&gt; s.decommissionRegionServers(c, req, done), resp -&gt; null))<a name="line.2222"></a>
 <span class="sourceLineNo">2223</span>        .call();<a name="line.2223"></a>
 <span class="sourceLineNo">2224</span>  }<a name="line.2224"></a>
 <span class="sourceLineNo">2225</span><a name="line.2225"></a>
 <span class="sourceLineNo">2226</span>  @Override<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>  public CompletableFuture&lt;Void&gt; recommissionRegionServer(ServerName server,<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      List&lt;byte[]&gt; encodedRegionNames) {<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>    return this.&lt;Void&gt; newMasterCaller()<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>        .action((controller, stub) -&gt; this<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>          .&lt;RecommissionRegionServerRequest, RecommissionRegionServerResponse, Void&gt; call(controller,<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>            stub, RequestConverter.buildRecommissionRegionServerRequest(server, encodedRegionNames),<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            (s, c, req, done) -&gt; s.recommissionRegionServer(c, req, done), resp -&gt; null))<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>        .call();<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>  }<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span><a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>  /**<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>   * Get the region location for the passed region name. The region name may be a full region name<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>   * or encoded region name. If the region does not found, then it'll throw an<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>   * UnknownRegionException wrapped by a {@link CompletableFuture}<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>   * @param regionNameOrEncodedRegionName<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>   * @return region location, wrapped by a {@link CompletableFuture}<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>   */<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>  @VisibleForTesting<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>  CompletableFuture&lt;HRegionLocation&gt; getRegionLocation(byte[] regionNameOrEncodedRegionName) {<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>    if (regionNameOrEncodedRegionName == null) {<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      return failedFuture(new IllegalArgumentException("Passed region name can't be null"));<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>    }<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>    try {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>      CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future;<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>      if (RegionInfo.isEncodedRegionName(regionNameOrEncodedRegionName)) {<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        future = AsyncMetaTableAccessor.getRegionLocationWithEncodedName(metaTable,<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>          regionNameOrEncodedRegionName);<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>      } else {<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>        future = AsyncMetaTableAccessor.getRegionLocation(metaTable, regionNameOrEncodedRegionName);<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>      }<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span><a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      CompletableFuture&lt;HRegionLocation&gt; returnedFuture = new CompletableFuture&lt;&gt;();<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>      addListener(future, (location, err) -&gt; {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>        if (err != null) {<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>          returnedFuture.completeExceptionally(err);<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>          return;<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>        }<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span>        if (!location.isPresent() || location.get().getRegion() == null) {<a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>          returnedFuture.completeExceptionally(<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>            new UnknownRegionException("Invalid region name or encoded region name: " +<a name="line.2266"></a>
-<span class="sourceLineNo">2267</span>              Bytes.toStringBinary(regionNameOrEncodedRegionName)));<a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>        } else {<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>          returnedFuture.complete(location.get());<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>        }<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      });<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>      return returnedFuture;<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>    } catch (IOException e) {<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span>      return failedFuture(e);<a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span><a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * Get the region info for the passed region name. The region name may be a full region name or<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * encoded region name. If the region does not found, then it'll throw an UnknownRegionException<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * wrapped by a {@link CompletableFuture}<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param regionNameOrEncodedRegionName<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @return region info, wrapped by a {@link CompletableFuture}<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   */<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>  private CompletableFuture&lt;RegionInfo&gt; getRegionInfo(byte[] regionNameOrEncodedRegionName) {<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>    if (regionNameOrEncodedRegionName == null) {<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>      return failedFuture(new IllegalArgumentException("Passed region name can't be null"));<a name="line.2287"></a>
+<span class="sourceLineNo">2227</span>  public CompletableFuture&lt;List&lt;ServerName&gt;&gt; listDecommissionedRegionServers() {<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>    return this.&lt;List&lt;ServerName&gt;&gt; newMasterCaller()<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>        .action((controller, stub) -&gt; this<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>          .&lt;ListDecommissionedRegionServersRequest, ListDecommissionedRegionServersResponse,<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>            List&lt;ServerName&gt;&gt; call(<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>              controller, stub, ListDecommissionedRegionServersRequest.newBuilder().build(),<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>              (s, c, req, done) -&gt; s.listDecommissionedRegionServers(c, req, done),<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>              resp -&gt; resp.getServerNameList().stream().map(ProtobufUtil::toServerName)<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>                  .collect(Collectors.toList())))<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>        .call();<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>  }<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span><a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>  @Override<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>  public CompletableFuture&lt;Void&gt; recommissionRegionServer(ServerName server,<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      List&lt;byte[]&gt; encodedRegionNames) {<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>    return this.&lt;Void&gt; newMasterCaller()<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>        .action((controller, stub) -&gt; this<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>          .&lt;RecommissionRegionServerRequest, RecommissionRegionServerResponse, Void&gt; call(controller,<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>            stub, RequestConverter.buildRecommissionRegionServerRequest(server, encodedRegionNames),<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>            (s, c, req, done) -&gt; s.recommissionRegionServer(c, req, done), resp -&gt; null))<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>        .call();<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>  }<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span><a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>  /**<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>   * Get the region location for the passed region name. The region name may be a full region name<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>   * or encoded region name. If the region does not found, then it'll throw an<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>   * UnknownRegionException wrapped by a {@link CompletableFuture}<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>   * @param regionNameOrEncodedRegionName<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>   * @return region location, wrapped by a {@link CompletableFuture}<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>   */<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>  @VisibleForTesting<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>  CompletableFuture&lt;HRegionLocation&gt; getRegionLocation(byte[] regionNameOrEncodedRegionName) {<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>    if (regionNameOrEncodedRegionName == null) {<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      return failedFuture(new IllegalArgumentException("Passed region name can't be null"));<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>    }<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    try {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      CompletableFuture&lt;Optional&lt;HRegionLocation&gt;&gt; future;<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      if (RegionInfo.isEncodedRegionName(regionNameOrEncodedRegionName)) {<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>        future = AsyncMetaTableAccessor.getRegionLocationWithEncodedName(metaTable,<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>          regionNameOrEncodedRegionName);<a name="line.2266"></a>
+<span class="sourceLineNo">2267</span>      } else {<a name="line.2267"></a>
+<span class="sourceLineNo">2268</span>        future = AsyncMetaTableAccessor.getRegionLocation(metaTable, regionNameOrEncodedRegionName);<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      }<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      CompletableFuture&lt;HRegionLocation&gt; returnedFuture = new CompletableFuture&lt;&gt;();<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      addListener(future, (location, err) -&gt; {<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>        if (err != null) {<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>          returnedFuture.completeExceptionally(err);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>          return;<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>        }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span>        if (!location.isPresent() || location.get().getRegion() == null) {<a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>          returnedFuture.completeExceptionally(<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>            new UnknownRegionException("Invalid region name or encoded region name: " +<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>              Bytes.toStringBinary(regionNameOrEncodedRegionName)));<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>        } else {<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>          returnedFuture.complete(location.get());<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>        }<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>      });<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>      return returnedFuture;<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>    } catch (IOException e) {<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>      return failedFuture(e);<a name="line.2287"></a>
 <span class="sourceLineNo">2288</span>    }<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span><a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>    if (Bytes.equals(regionNameOrEncodedRegionName,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName()) ||<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>      Bytes.equals(regionNameOrEncodedRegionName,<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>        RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedNameAsBytes())) {<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>      return CompletableFuture.completedFuture(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    }<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span><a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    CompletableFuture&lt;RegionInfo&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    addListener(getRegionLocation(regionNameOrEncodedRegionName), (location, err) -&gt; {<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>      if (err != null) {<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>        future.completeExceptionally(err);<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>      } else {<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>        future.complete(location.getRegion());<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>      }<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>    });<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>    return future;<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>  }<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span><a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>  private byte[][] getSplitKeys(byte[] startKey, byte[] endKey, int numRegions) {<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>    if (numRegions &lt; 3) {<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      throw new IllegalArgumentException("Must create at least three regions");<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>    } else if (Bytes.compareTo(startKey, endKey) &gt;= 0) {<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      throw new IllegalArgumentException("Start key must be smaller than end key");<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>    }<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>    if (numRegions == 3) {<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>      return new byte[][] { startKey, endKey };<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>    }<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>    if (splitKeys == null || splitKeys.length != numRegions - 1) {<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      throw new IllegalArgumentException("Unable to split key range into enough regions");<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>    }<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>    return splitKeys;<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>  }<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span><a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>  private void verifySplitKeys(byte[][] splitKeys) {<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>    Arrays.sort(splitKeys, Bytes.BYTES_COMPARATOR);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>    // Verify there are no duplicate split keys<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    byte[] lastKey = null;<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>    for (byte[] splitKey : splitKeys) {<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span>      if (Bytes.compareTo(splitKey, HConstants.EMPTY_BYTE_ARRAY) == 0) {<a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>        throw new IllegalArgumentException("Empty split key must not be passed in the split keys.");<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>      }<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>      if (lastKey != null &amp;&amp; Bytes.equals(splitKey, lastKey)) {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>        throw new IllegalArgumentException("All split keys must be unique, " + "found duplicate: "<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>            + Bytes.toStringBinary(splitKey) + ", " + Bytes.toStringBinary(lastKey));<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>      }<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      lastKey = splitKey;<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>    }<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>  }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span><a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>  private static abstract class ProcedureBiConsumer implements BiConsumer&lt;Void, Throwable&gt; {<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span><a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    abstract void onFinished();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span><a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>    abstract void onError(Throwable error);<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>    @Override<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>    public void accept(Void v, Throwable error) {<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>      if (error != null) {<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>        onError(error);<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>        return;<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>      }<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>      onFinished();<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    }<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>  }<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span><a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  private static abstract class TableProcedureBiConsumer extends ProcedureBiConsumer {<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span>    protected final TableName tableName;<a name="line.2357"></a>
+<span class="sourceLineNo">2289</span>  }<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span><a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>  /**<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>   * Get the region info for the passed region name. The region name may be a full region name or<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>   * encoded region name. If the region does not found, then it'll throw an UnknownRegionException<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>   * wrapped by a {@link CompletableFuture}<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>   * @param regionNameOrEncodedRegionName<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>   * @return region info, wrapped by a {@link CompletableFuture}<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>   */<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>  private CompletableFuture&lt;RegionInfo&gt; getRegionInfo(byte[] regionNameOrEncodedRegionName) {<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    if (regionNameOrEncodedRegionName == null) {<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>      return failedFuture(new IllegalArgumentException("Passed region name can't be null"));<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    }<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span><a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    if (Bytes.equals(regionNameOrEncodedRegionName,<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>      RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName()) ||<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>      Bytes.equals(regionNameOrEncodedRegionName,<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedNameAsBytes())) {<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>      return CompletableFuture.completedFuture(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>    }<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span><a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>    CompletableFuture&lt;RegionInfo&gt; future = new CompletableFuture&lt;&gt;();<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>    addListener(getRegionLocation(regionNameOrEncodedRegionName), (location, err) -&gt; {<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      if (err != null) {<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>        future.completeExceptionally(err);<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      } else {<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>        future.complete(location.getRegion());<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      }<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>    });<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    return future;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>  }<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span><a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>  private byte[][] getSplitKeys(byte[] startKey, byte[] endKey, int numRegions) {<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>    if (numRegions &lt; 3) {<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      throw new IllegalArgumentException("Must create at least three regions");<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>    } else if (Bytes.compareTo(startKey, endKey) &gt;= 0) {<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>      throw new IllegalArgumentException("Start key must be smaller than end key");<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>    }<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>    if (numRegions == 3) {<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      return new byte[][] { startKey, endKey };<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>    }<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>    if (splitKeys == null || splitKeys.length != numRegions - 1) {<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span>      throw new IllegalArgumentException("Unable to split key range into enough regions");<a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>    }<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>    return splitKeys;<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  }<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span><a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>  private void verifySplitKeys(byte[][] splitKeys) {<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    Arrays.sort(splitKeys, Bytes.BYTES_COMPARATOR);<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>    // Verify there are no duplicate split keys<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>    byte[] lastKey = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    for (byte[] splitKey : splitKeys) {<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>      if (Bytes.compareTo(splitKey, HConstants.EMPTY_BYTE_ARRAY) == 0) {<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>        throw new IllegalArgumentException("Empty split key must not be passed in the split keys.");<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>      }<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>      if (lastKey != null &amp;&amp; Bytes.equals(splitKey, lastKey)) {<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>        throw new IllegalArgumentException("All split keys must be unique, " + "found duplicate: "<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>            + Bytes.toStringBinary(splitKey) + ", " + Bytes.toStringBinary(lastKey));<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span>      }<a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>      lastKey = splitKey;<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>    }<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>  }<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span><a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>  private static abstract class ProcedureBiConsumer implements BiConsumer&lt;Void, Throwable&gt; {<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span><a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>    abstract void onFinished();<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span><a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>    abstract void onError(Throwable error);<a name="line.2357"></a>
 <span class="sourceLineNo">2358</span><a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>    TableProcedureBiConsumer(TableName tableName) {<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>      this.tableName = tableName;<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>    }<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span><a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>    abstract String getOperationType();<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span><a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>    String getDescription() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>      return "Operation: " + getOperationType() + ", " + "Table Name: "<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>          + tableName.getNameWithNamespaceInclAsString();<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span><a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>    @Override<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span>    void onFinished() {<a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>      LOG.info(getDescription() + " completed");<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>    }<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span><a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>    @Override<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>    void onError(Throwable error) {<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>      LOG.info(getDescription() + " failed with " + error.getMessage());<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    }<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  private static abstract class NamespaceProcedureBiConsumer extends ProcedureBiConsumer {<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>    protected final String namespaceName;<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span><a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>    NamespaceProcedureBiConsumer(String namespaceName) {<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span>      this.namespaceName = namespaceName;<a name="line.2385"></a>
+<span class="sourceLineNo">2359</span>    @Override<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span>    public void accept(Void v, Throwable error) {<a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>      if (error != null) {<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>        onError(error);<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>        return;<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>      }<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>      onFinished();<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>    }<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  }<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span><a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>  private static abstract class TableProcedureBiConsumer extends ProcedureBiConsumer {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>    protected final TableName tableName;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span><a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    TableProcedureBiConsumer(TableName tableName) {<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>      this.tableName = tableName;<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span>    }<a name="line.2374"></a>
+<span class="sourceLineNo">2375</span><a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>    abstract String getOperationType();<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span><a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>    String getDescription() {<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>      return "Operation: " + getOperationType() + ", " + "Table Name: "<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>          + tableName.getNameWithNamespaceInclAsString();<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    }<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span><a name="line.2382"></a>
+<span class="sourceLineNo">2383</span>    @Override<a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>    void onFinished() {<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>      LOG.info(getDescription() + " completed");<a name="line.2385"></a>
 <span class="sourceLineNo">2386</span>    }<a name="line.2386"></a>
 <span class="sourceLineNo">2387</span><a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>    abstract String getOperationType();<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span><a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>    String getDescription() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>      return "Operation: " + getOperationType() + ", Namespace: " + namespaceName;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>    }<a name="line.2392"></a>
+<span class="sourceLineNo">2388</span>    @Override<a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>    void onError(Throwable error) {<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>      LOG.info(getDescription() + " failed with " + error.getMessage());<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>    }<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
 <span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>    @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>    void onFinished() {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>      LOG.info(getDescription() + " completed");<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>    }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>    @Override<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>    void onError(Throwable error) {<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>      LOG.info(getDescription() + " failed with " + error.getMessage());<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>    }<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>  }<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span><a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>  private static class CreateTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2405"></a>
+<span class="sourceLineNo">2394</span>  private static abstract class NamespaceProcedureBiConsumer extends ProcedureBiConsumer {<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>    protected final String namespaceName;<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>    NamespaceProcedureBiConsumer(String namespaceName) {<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>      this.namespaceName = namespaceName;<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    }<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span><a name="line.2400"></a>
+<span class="sourceLineNo">2401</span>    abstract String getOperationType();<a name="line.2401"></a>
+<span class="sourceLineNo">2402</span><a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>    String getDescription() {<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>      return "Operation: " + getOperationType() + ", Namespace: " + namespaceName;<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>    }<a name="line.2405"></a>
 <span class="sourceLineNo">2406</span><a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>    CreateTableProcedureBiConsumer(TableName tableName) {<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>      super(tableName);<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>    }<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span><a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    @Override<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>    String getOperationType() {<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      return "CREATE";<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  private static class ModifyTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span><a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>    ModifyTableProcedureBiConsumer(AsyncAdmin admin, TableName tableName) {<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>      super(tableName);<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>    }<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span><a name="line.2422"></a>
-<span class="sourceLineNo">2423</span>    @Override<a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>    String getOperationType() {<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>      return "ENABLE";<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>    }<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>  }<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span><a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>  private class DeleteTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span><a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>    DeleteTableProcedureBiConsumer(TableName tableName) {<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>      super(tableName);<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>    }<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span><a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>    @Override<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>    String getOperationType() {<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>      return "DELETE";<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>    }<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span><a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    @Override<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    void onFinished() {<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>      connection.getLocator().clearCache(this.tableName);<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>      super.onFinished();<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span>    }<a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  }<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span><a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>  private static class TruncateTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span><a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>    TruncateTableProcedureBiConsumer(TableName tableName) {<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>      super(tableName);<a name="line.2450"></a>
+<span class="sourceLineNo">2407</span>    @Override<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>    void onFinished() {<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>      LOG.info(getDescription() + " completed");<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>    }<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span><a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>    @Override<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>    void onError(Throwable error) {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>      LOG.info(getDescription() + " failed with " + error.getMessage());<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>    }<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>  }<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span><a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  private static class CreateTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>    CreateTableProcedureBiConsumer(TableName tableName) {<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>      super(tableName);<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>    }<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span><a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>    @Override<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>    String getOperationType() {<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span>      return "CREATE";<a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>    }<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>  }<a name="line.2428"></a>
+<span class="sourceLineNo">2429</span><a name="line.2429"></a>
+<span class="sourceLineNo">2430</span>  private static class ModifyTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2430"></a>
+<span class="sourceLineNo">2431</span><a name="line.2431"></a>
+<span class="sourceLineNo">2432</span>    ModifyTableProcedureBiConsumer(AsyncAdmin admin, TableName tableName) {<a name="line.2432"></a>
+<span class="sourceLineNo">2433</span>      super(tableName);<a name="line.2433"></a>
+<span class="sourceLineNo">2434</span>    }<a name="line.2434"></a>
+<span class="sourceLineNo">2435</span><a name="line.2435"></a>
+<span class="sourceLineNo">2436</span>    @Override<a name="line.2436"></a>
+<span class="sourceLineNo">2437</span>    String getOperationType() {<a name="line.2437"></a>
+<span class="sourceLineNo">2438</span>      return "ENABLE";<a name="line.2438"></a>
+<span class="sourceLineNo">2439</span>    }<a name="line.2439"></a>
+<span class="sourceLineNo">2440</span>  }<a name="line.2440"></a>
+<span class="sourceLineNo">2441</span><a name="line.2441"></a>
+<span class="sourceLineNo">2442</span>  private class DeleteTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2442"></a>
+<span class="sourceLineNo">2443</span><a name="line.2443"></a>
+<span class="sourceLineNo">2444</span>    DeleteTableProcedureBiConsumer(TableName tableName) {<a name="line.2444"></a>
+<span class="sourceLineNo">2445</span>      super(tableName);<a name="line.2445"></a>
+<span class="sourceLineNo">2446</span>    }<a name="line.2446"></a>
+<span class="sourceLineNo">2447</span><a name="line.2447"></a>
+<span class="sourceLineNo">2448</span>    @Override<a name="line.2448"></a>
+<span class="sourceLineNo">2449</span>    String getOperationType() {<a name="line.2449"></a>
+<span class="sourceLineNo">2450</span>      return "DELETE";<a name="line.2450"></a>
 <span class="sourceLineNo">2451</span>    }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>    @Override<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>    String getOperationType() {<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>      return "TRUNCATE";<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>    }<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  }<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span><a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>  private static class EnableTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span><a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>    EnableTableProcedureBiConsumer(TableName tableName) {<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>      super(tableName);<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>    }<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span><a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    @Override<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>    String getOperationType() {<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>      return "ENABLE";<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>    }<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>  }<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span><a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>  private static class DisableTableProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span><a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>    DisableTableProcedureBiConsumer(TableName tableName) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>      super(tableName);<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>    }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span><a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>    @Override<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>    String getOperationType() {<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>      return "DISABLE";<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>    }<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span><a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>  private static class AddColumnFamilyProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    AddColumnFamilyProcedureBiConsumer(TableName tableName) {<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>      super(tableName);<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    }<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    @Override<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>    String getOperationType() {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>      return "ADD_COLUMN_FAMILY";<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>    }<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  }<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span><a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>  private static class DeleteColumnFamilyProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span><a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    DeleteColumnFamilyProcedureBiConsumer(TableName tableName) {<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>      super(tableName);<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    }<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span><a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>    @Override<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>    String getOperationType() {<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>      return "DELETE_COLUMN_FAMILY";<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>    }<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>  }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span><a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  private static class ModifyColumnFamilyProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>    ModifyColumnFamilyProcedureBiConsumer(TableName tableName) {<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>      super(tableName);<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>    }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>    @Override<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>    String getOperationType() {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>      return "MODIFY_COLUMN_FAMILY";<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    }<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  private static class CreateNamespaceProcedureBiConsumer extends NamespaceProcedureBiConsumer {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span><a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    CreateNamespaceProcedureBiConsumer(String namespaceName) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      super(namespaceName);<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>    }<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span><a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    @Override<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    String getOperationType() {<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>      return "CREATE_NAMESPACE";<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>    }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>  }<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span><a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  private static class DeleteNamespaceProcedureBiConsumer extends NamespaceProcedureBiConsumer {<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>    DeleteNamespaceProcedureBiConsumer(String namespaceName) {<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>      super(namespaceName);<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    }<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span><a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    @Override<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    String getOperationType() {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      return "DELETE_NAMESPACE";<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>  }<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span><a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>  private static class ModifyNamespaceProcedureBiConsumer extends NamespaceProcedureBiConsumer {<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span><a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>    ModifyNamespaceProcedureBiConsumer(String namespaceName) {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>      super(namespaceName);<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    }<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span><a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>    @Override<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    String getOperationType() {<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>      return "MODIFY_NAMESPACE";<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>    }<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  }<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span><a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  private static class MergeTableRegionProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span><a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    MergeTableRegionProcedureBiConsumer(TableName tableName) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      super(tableName);<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>    }<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span><a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    @Override<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    String getOperationType() {<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      return "MERGE_REGIONS";<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>    }<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  }<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span><a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>  private static class SplitTableRegionProcedureBiConsumer extends TableProcedureBiConsumer {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span><a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>    SplitTableRegionProcedureBiConsumer(TableName tableName) {<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      super(tableName);<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span><a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    @Override<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>    String getOperationType() {<a name="line.2574"></a>
... 144900 lines suppressed ...