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/05/30 14:51:51 UTC

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

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 ea7c94f  Published site at 78e4aea3c59a480507e9ac1e9ec113ef508d9a86.
ea7c94f is described below

commit ea7c94f1e853ef69fed56923599bd5d2db426983
Author: jenkins <bu...@apache.org>
AuthorDate: Thu May 30 14:51:34 2019 +0000

    Published site at 78e4aea3c59a480507e9ac1e9ec113ef508d9a86.
---
 acid-semantics.html                                |   2 +-
 apache_hbase_reference_guide.pdf                   |   4 +-
 book.html                                          |   2 +-
 bulk-loads.html                                    |   2 +-
 checkstyle-aggregate.html                          |  10 +-
 checkstyle.rss                                     |  16 +-
 coc.html                                           |   2 +-
 dependencies.html                                  |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/constant-values.html                    |   2 +-
 devapidocs/index-all.html                          |   4 +
 .../hadoop/hbase/backup/impl/BackupManifest.html   |  26 +-
 .../apache/hadoop/hbase/backup/package-tree.html   |   4 +-
 .../apache/hadoop/hbase/client/package-tree.html   |  24 +-
 .../apache/hadoop/hbase/executor/package-tree.html |   2 +-
 .../apache/hadoop/hbase/filter/package-tree.html   |   8 +-
 .../org/apache/hadoop/hbase/http/package-tree.html |   2 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |   6 +-
 .../org/apache/hadoop/hbase/ipc/package-tree.html  |   2 +-
 .../hadoop/hbase/mapreduce/package-tree.html       |   2 +-
 .../hbase/master/assignment/package-tree.html      |   2 +-
 .../hadoop/hbase/master/balancer/package-tree.html |   2 +-
 .../apache/hadoop/hbase/master/package-tree.html   |   4 +-
 .../hbase/master/procedure/package-tree.html       |   2 +-
 .../hadoop/hbase/monitoring/package-tree.html      |   2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |  18 +-
 .../hadoop/hbase/procedure2/package-tree.html      |   4 +-
 .../apache/hadoop/hbase/quotas/package-tree.html   |   4 +-
 .../hadoop/hbase/regionserver/package-tree.html    |  18 +-
 .../hbase/regionserver/wal/package-tree.html       |   6 +-
 .../hadoop/hbase/rest/model/package-tree.html      |   2 +-
 .../hadoop/hbase/security/access/package-tree.html |   4 +-
 .../apache/hadoop/hbase/security/package-tree.html |   2 +-
 .../apache/hadoop/hbase/thrift/package-tree.html   |   2 +-
 .../org/apache/hadoop/hbase/util/FutureUtils.html  |  55 ++-
 .../org/apache/hadoop/hbase/util/package-tree.html |  12 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |   2 +-
 .../impl/BackupManifest.BackupImage.Builder.html   | 457 +++++++++++----------
 .../backup/impl/BackupManifest.BackupImage.html    | 457 +++++++++++----------
 .../hadoop/hbase/backup/impl/BackupManifest.html   | 457 +++++++++++----------
 .../org/apache/hadoop/hbase/util/FutureUtils.html  | 291 +++++++------
 .../org/apache/hadoop/hbase/util/UnsafeAccess.html |   2 +-
 downloads.html                                     |   2 +-
 export_control.html                                |   2 +-
 index.html                                         |   2 +-
 issue-management.html                              |   2 +-
 licenses.html                                      |   2 +-
 mailing-lists.html                                 |   2 +-
 metrics.html                                       |   2 +-
 old_news.html                                      |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 poweredbyhbase.html                                |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 pseudo-distributed.html                            |   2 +-
 replication.html                                   |   2 +-
 resources.html                                     |   2 +-
 scm.html                                           |   2 +-
 sponsors.html                                      |   2 +-
 summary.html                                       |   2 +-
 supportingprojects.html                            |   2 +-
 team.html                                          |   2 +-
 testdevapidocs/allclasses-frame.html               |   1 +
 testdevapidocs/allclasses-noframe.html             |   1 +
 testdevapidocs/index-all.html                      |  18 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |  78 ++--
 .../apache/hadoop/hbase/io/hfile/package-tree.html |   2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |  10 +-
 .../hadoop/hbase/procedure2/package-tree.html      |   2 +-
 .../hadoop/hbase/regionserver/package-tree.html    |   6 +-
 ...ationStatusSourceStartedTargetStoppedNoOps.html |  10 +-
 .../org/apache/hadoop/hbase/test/package-tree.html |   4 +-
 .../apache/hadoop/hbase/util/TestFSVisitor.html    |   4 +-
 .../TestFutureUtils.html}                          | 120 +++---
 .../TestHBaseFsckCleanReplicationBarriers.html     |   4 +-
 .../hbase/util/class-use/TestFutureUtils.html      | 125 ++++++
 .../apache/hadoop/hbase/util/package-frame.html    |   1 +
 .../apache/hadoop/hbase/util/package-summary.html  |  78 ++--
 .../org/apache/hadoop/hbase/util/package-tree.html |   1 +
 .../org/apache/hadoop/hbase/wal/package-tree.html  |   2 +-
 testdevapidocs/overview-tree.html                  |   1 +
 .../TestReplicationStatusAfterLagging.html         |   2 +-
 ...licationStatusBothNormalAndRecoveryLagging.html |   2 +-
 ...ationStatusSourceStartedTargetStoppedNewOp.html |   2 +-
 ...ationStatusSourceStartedTargetStoppedNoOps.html |   4 +-
 ...atusSourceStartedTargetStoppedWithRecovery.html |   2 +-
 .../apache/hadoop/hbase/util/TestFutureUtils.html  | 157 +++++++
 90 files changed, 1514 insertions(+), 1098 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index aaeb6b4..48bbcee 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -457,7 +457,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index bef742f..2cb1a2b 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:20190529144639+00'00')
-/CreationDate (D:20190529144639+00'00')
+/ModDate (D:20190530144727+00'00')
+/CreationDate (D:20190530144727+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index 9d09f42..ca5828d 100644
--- a/book.html
+++ b/book.html
@@ -41782,7 +41782,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-05-29 14:29:46 UTC
+Last updated 2019-05-30 14:29:43 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 5877ebb..2933aee 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -162,7 +162,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index cc7eb3d..2c9748e 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -156,7 +156,7 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3945</td>
+<td>3946</td>
 <td>0</td>
 <td>0</td>
 <td>12988</td></tr></table></div>
@@ -8831,12 +8831,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>680</td>
+<td>681</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>3227</td>
+<td>3226</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -17641,7 +17641,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">
@@ -102213,7 +102213,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle.rss b/checkstyle.rss
index 4ab531d..a29ae4d 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,7 +25,7 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2019 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3945,
+      <title>File: 3946,
              Errors: 12988,
              Warnings: 0,
              Infos: 0
@@ -54884,6 +54884,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.TestFutureUtils.java">org/apache/hadoop/hbase/util/TestFutureUtils.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.ReplicationPeers.java">org/apache/hadoop/hbase/replication/ReplicationPeers.java</a>
                 </td>
                 <td>
diff --git a/coc.html b/coc.html
index 505bf37..e65aeb0 100644
--- a/coc.html
+++ b/coc.html
@@ -231,7 +231,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index ebbfb08..af5122e 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -311,7 +311,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 8df3e58..63c47c6 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -590,7 +590,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index eb1a3a4..3a51e1c 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -184,7 +184,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 59006a3..b95e75f 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -894,7 +894,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 9428c28..86cc2be 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3927,7 +3927,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>"Wed May 29 14:34:53 UTC 2019"</code></td>
+<td class="colLast"><code>"Thu May 30 14:35:11 UTC 2019"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 0e4f2c9..4a7859d 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -98103,6 +98103,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html#retCodeDetails">retCodeDetails</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FutureUtils.html#rethrow-java.util.concurrent.ExecutionException-">rethrow(ExecutionException)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FutureUtils.html" title="class in org.apache.hadoop.hbase.util">FutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/codec/BaseDecoder.html#rethrowEofException-java.io.IOException-">rethrowEofException(IOException)</a></span> - Method in class org.apache.hadoop.hbase.codec.<a href="org/apache/hadoop/hbase/codec/BaseDecoder.html" title="class in org.apache.hadoop.hbase.codec">BaseDecoder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html#rethrowException--">rethrowException()</a></span> - Method in class org.apache.hadoop.hbase.errorhandling.<a href="org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></dt>
@@ -107330,6 +107332,8 @@ service.</div>
 <div class="block">Called on store load to initialize the Procedure internals after
  the creation/deserialization.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FutureUtils.html#setStackTrace-java.lang.Throwable-">setStackTrace(Throwable)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FutureUtils.html" title="class in org.apache.hadoop.hbase.util">FutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.html#setStartAndStopRows-org.apache.hadoop.hbase.client.Scan-byte:A-byte:A-">setStartAndStopRows(Scan, byte[], byte[])</a></span> - Static method in class org.apache.hadoop.hbase.mapreduce.replication.<a href="org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.html" title="class in org.apache.hadoop.hbase.mapreduce.replication">VerifyReplication</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/StorageClusterStatusModel.Node.html#setStartCode-long-">setStartCode(long)</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/StorageClusterStatusModel.Node.html" title="class in org.apache.hadoop.hbase.rest.model">StorageClusterStatusModel.Node</a></dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupManifest.html b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupManifest.html
index 4b63329..5f2469e 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupManifest.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupManifest.html
@@ -451,7 +451,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup">BackupType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.460">getType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup">BackupType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.463">getType</a>()</pre>
 </li>
 </ul>
 <a name="getTableList--">
@@ -460,7 +460,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableList</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.468">getTableList</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.471">getTableList</a>()</pre>
 <div class="block">Get the table set of this image.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -474,7 +474,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>store</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.476">store</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.479">store</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
            throws <a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupException.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupException</a></pre>
 <div class="block">TODO: fix it. Persist the manifest file.</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>getBackupImage</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.496">getBackupImage</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.499">getBackupImage</a>()</pre>
 <div class="block">Get this backup image.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -504,7 +504,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addDependentImage</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.504">addDependentImage</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;image)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.507">addDependentImage</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;image)</pre>
 <div class="block">Add dependent backup image for this backup.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -518,7 +518,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setIncrTimestampMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.512">setIncrTimestampMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/HashMap.h [...]
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.515">setIncrTimestampMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/HashMap.h [...]
 <div class="block">Set the incremental timestamp map directly.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -532,7 +532,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getIncrTimestampMap</h4>
-<pre>public&nbsp;<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/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String [...]
+<pre>public&nbsp;<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/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String [...]
 </li>
 </ul>
 <a name="getRestoreDependentList-boolean-">
@@ -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>getRestoreDependentList</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.525">getRestoreDependentList</a>(boole [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.528">getRestoreDependentList</a>(boole [...]
 <div class="block">Get the image list of this backup for restore in time order.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -557,7 +557,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getDependentListByTable</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.541">getDependentListByTable</a>(<a hr [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.544">getDependentListByTable</a>(<a hr [...]
 <div class="block">Get the dependent image list for a specific table of this backup in time order from old to new
  if want to restore to this backup image level.</div>
 <dl>
@@ -574,7 +574,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllDependentListByTable</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.563">getAllDependentListByTable</a>(<a [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.566">getAllDependentListByTable</a>(<a [...]
 <div class="block">Get the full dependent image list in the whole dependency scope for a specific table of this
  backup in time order from old to new.</div>
 <dl>
@@ -592,7 +592,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>canCoverImage</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.580">canCoverImage</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;image1,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.583">canCoverImage</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;image1,
                                     <a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;image2)</pre>
 <div class="block">Check whether backup image1 could cover backup image2 or not.</div>
 <dl>
@@ -610,7 +610,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>canCoverImage</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.617">canCoverImage</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;& [...]
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.620">canCoverImage</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&gt;& [...]
                                     <a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupManifest.BackupImage</a>&nbsp;image)</pre>
 <div class="block">Check whether backup image set could cover a backup image or not.</div>
 <dl>
@@ -628,7 +628,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toBackupInfo</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.654">toBackupInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html#line.657">toBackupInfo</a>()</pre>
 </li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index db18ec0..5c05b83 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index b2df11f..02f2747 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -549,24 +549,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index 531254c..127caa7 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index 6afd9bd..ee5aef6 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -189,13 +189,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/http/package-tree.html b/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
index e1a5d8d..26468e3 100644
--- a/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
@@ -138,9 +138,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Output.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Output</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/HttpConfig.Policy.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">HttpConfig.Policy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Event.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Event</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Output.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Output</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index bb583e3..31b42a2 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -283,12 +283,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheFactory.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockCacheFactory.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index 05f6fbe..d288952 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -354,8 +354,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index fbca2a7..84fa62d 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -297,10 +297,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
index e0b322d..f63d55a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
@@ -148,8 +148,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">ServerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.TransitionType.html" title="enum in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TransitRegionStateProcedure.TransitionType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">ServerState</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index c49c655..848d41f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -198,8 +198,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index f4e1679..4241a1a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -356,10 +356,10 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index 9a92da9..d78efc3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -217,9 +217,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 7524d90..452eaee 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index bde97af..22840fd 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -433,19 +433,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 8eb2ac0..a5511ed 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -217,10 +217,10 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 2cb8fa6..36b75a6 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -240,11 +240,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 0239d94..1c5fe7e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -715,19 +715,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 7291aff..5ef6472 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,10 +247,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.RollRequestReason.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.RollRequestReason</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.RollRequestReason.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.RollRequestReason</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index 3aa879d..7d70035 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index db71036..808195b 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -143,10 +143,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index 4b0ca3e..3412365 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -192,9 +192,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 47e3265..66d0a39 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -207,9 +207,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ImplType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/FutureUtils.html b/devapidocs/org/apache/hadoop/hbase/util/FutureUtils.html
index d5ad99f..800dd3e 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/FutureUtils.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/FutureUtils.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.41">FutureUtils</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.39">FutureUtils</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">Helper class for processing futures.</div>
 </li>
@@ -209,12 +209,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>private static <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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FutureUtils.html#rethrow-java.util.concurrent.ExecutionException-">rethrow</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a>&nbsp;error)</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FutureUtils.html#setStackTrace-java.lang.Throwable-">setStackTrace</a></span>(<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)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static <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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FutureUtils.html#unwrapCompletionException-java.lang.Throwable-">unwrapCompletionException</a></span>(<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)</code>
 <div class="block">Get the cause of the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><code>Throwable</code></a> if it is a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletionException.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletionException</code></a>.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>static &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;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/FutureUtils.html#wrapFuture-java.util.concurrent.CompletableFuture-java.util.concurrent.Executor-">wrapFuture</a></span>(<a href="https://docs.oracle.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/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent">Executor</a>&nbsp;executor)</code>
@@ -250,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.43">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.41">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -267,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FutureUtils</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.45">FutureUtils</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.43">FutureUtils</a>()</pre>
 </li>
 </ul>
 </li>
@@ -284,7 +292,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addListener</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.61">addListener</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>public static&nbsp;&lt;T&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.59">addListener</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/util/function/BiConsumer.html?is-external=true" title="class or interface in java.util.function">BiConsumer</a>&lt;? super T,? super <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;&nbsp;action)</pre>
 <div class="block">This is method is used when you just want to add a listener to the given future. We will call
  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true#whenComplete-java.util.function.BiConsumer-" title="class or interface in java.util.concurrent"><code>CompletableFuture.whenComplete(BiConsumer)</code></a> to register the <code>action</code> to the
@@ -304,7 +312,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addListener</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.84">addListener</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>public static&nbsp;&lt;T&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.82">addListener</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/util/function/BiConsumer.html?is-external=true" title="class or interface in java.util.function">BiConsumer</a>&lt;? super T,? super <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;&nbsp;action,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent">Executor</a>&nbsp;executor)</pre>
 <div class="block">Almost the same with <a href="../../../../../org/apache/hadoop/hbase/util/FutureUtils.html#addListener-java.util.concurrent.CompletableFuture-java.util.function.BiConsumer-"><code>addListener(CompletableFuture, BiConsumer)</code></a> method above, the only
@@ -322,7 +330,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>wrapFuture</h4>
-<pre>public static&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/util/FutureUtils.html#line.99">wrapFuture</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.uti [...]
+<pre>public static&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/util/FutureUtils.html#line.97">wrapFuture</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.uti [...]
                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent">Executor</a>&nbsp;executor)</pre>
 <div class="block">Return 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> which is same with the given <code>future</code>, but execute all
  the callbacks in the given <code>executor</code>.</div>
@@ -334,17 +342,40 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>unwrapCompletionException</h4>
-<pre>public static&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.115">unwrapCompletionException</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 static&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.113">unwrapCompletionException</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">Get the cause of the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><code>Throwable</code></a> if it is a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletionException.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletionException</code></a>.</div>
 </li>
 </ul>
+<a name="setStackTrace-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setStackTrace</h4>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.129">setStackTrace</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="rethrow-java.util.concurrent.ExecutionException-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>rethrow</h4>
+<pre>private static&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.142">rethrow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a>&nbsp;error)
+                            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>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
 <a name="get-java.util.concurrent.Future-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.129">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;T&gt;&nbsp;future)
+<pre>public static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.162">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;T&gt;&nbsp;future)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">A helper class for getting the result of a Future, and convert the error to an
  <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io"><code>IOException</code></a>.</div>
@@ -360,7 +391,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.145">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;T&gt;&nbsp;future,
+<pre>public static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/FutureUtils.html#line.176">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a>&lt;T&gt;&nbsp;future,
                         long&nbsp;timeout,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)
                  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>
@@ -378,7 +409,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>failedFuture</h4>
-<pre>public static&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/util/FutureUtils.html#line.162">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</a> [...]
+<pre>public static&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/util/FutureUtils.html#line.191">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</a> [...]
 <div class="block">Returns a CompletableFuture that is already completed exceptionally with the given exception.</div>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 1566573..46fb390 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -542,14 +542,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 9192776..dfa73b0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,7 +18,7 @@
 <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 = "Unknown";<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 = "Wed May 29 14:34:53 UTC 2019";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Thu May 30 14:35:11 UTC 2019";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "file:///home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
 <span class="sourceLineNo">015</span>  public static final String srcChecksum = "(stdin)=";<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/backup/impl/BackupManifest.BackupImage.Builder.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.Builder.html
index ec2aa41..3d369e6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.Builder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.Builder.html
@@ -442,239 +442,242 @@
 <span class="sourceLineNo">434</span>      for (FileStatus subFile : subFiles) {<a name="line.434"></a>
 <span class="sourceLineNo">435</span>        if (subFile.getPath().getName().equals(MANIFEST_FILE_NAME)) {<a name="line.435"></a>
 <span class="sourceLineNo">436</span>          // load and set manifest field from file content<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          FSDataInputStream in = fs.open(subFile.getPath());<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          long len = subFile.getLen();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          byte[] pbBytes = new byte[(int) len];<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          in.readFully(pbBytes);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          BackupProtos.BackupImage proto = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          try {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            proto = BackupProtos.BackupImage.parseFrom(pbBytes);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          } catch (Exception e) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            throw new BackupException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          this.backupImage = BackupImage.fromProto(proto);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          LOG.debug("Loaded manifest instance from manifest file: "<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              + BackupUtils.getPath(subFile.getPath()));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          return;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      String errorMsg = "No manifest file found in: " + backupPath.toString();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      throw new IOException(errorMsg);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    } catch (IOException e) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      throw new BackupException(e.getMessage());<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public BackupType getType() {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    return backupImage.getType();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  }<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>   * Get the table set of this image.<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @return The table set list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public List&lt;TableName&gt; getTableList() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return backupImage.getTableNames();<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>   * TODO: fix it. Persist the manifest file.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * @throws IOException IOException when storing the manifest file.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   */<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void store(Configuration conf) throws BackupException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    byte[] data = backupImage.toProto().toByteArray();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    // write the file, overwrite if already exist<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    Path manifestFilePath =<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        new Path(HBackupFileSystem.getBackupPath(backupImage.getRootDir(),<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          backupImage.getBackupId()), MANIFEST_FILE_NAME);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try (FSDataOutputStream out =<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        manifestFilePath.getFileSystem(conf).create(manifestFilePath, true)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      out.write(data);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    } catch (IOException e) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      throw new BackupException(e.getMessage());<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>    LOG.info("Manifest file stored to " + manifestFilePath);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
+<span class="sourceLineNo">437</span>          long len = subFile.getLen();<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          byte[] pbBytes = new byte[(int) len];<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          try (FSDataInputStream in = fs.open(subFile.getPath())) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            in.readFully(pbBytes);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          } catch (IOException e) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            throw new BackupException(e.getMessage());<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          BackupProtos.BackupImage proto = null;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          try {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            proto = BackupProtos.BackupImage.parseFrom(pbBytes);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          } catch (Exception e) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>            throw new BackupException(e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          this.backupImage = BackupImage.fromProto(proto);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.debug("Loaded manifest instance from manifest file: "<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              + BackupUtils.getPath(subFile.getPath()));<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          return;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      String errorMsg = "No manifest file found in: " + backupPath.toString();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      throw new IOException(errorMsg);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    } catch (IOException e) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      throw new BackupException(e.getMessage());<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><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public BackupType getType() {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    return backupImage.getType();<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>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Get the table set of this image.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @return The table set list<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   */<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  public List&lt;TableName&gt; getTableList() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return backupImage.getTableNames();<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>  /**<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * TODO: fix it. Persist the manifest file.<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @throws IOException IOException when storing the manifest file.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public void store(Configuration conf) throws BackupException {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    byte[] data = backupImage.toProto().toByteArray();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    // write the file, overwrite if already exist<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    Path manifestFilePath =<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        new Path(HBackupFileSystem.getBackupPath(backupImage.getRootDir(),<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          backupImage.getBackupId()), MANIFEST_FILE_NAME);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    try (FSDataOutputStream out =<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        manifestFilePath.getFileSystem(conf).create(manifestFilePath, true)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      out.write(data);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    } catch (IOException e) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new BackupException(e.getMessage());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
 <span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>  /**<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Get this backup image.<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @return the backup image.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   */<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  public BackupImage getBackupImage() {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    return backupImage;<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>   * Add dependent backup image for this backup.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param image The direct dependent backup image<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public void addDependentImage(BackupImage image) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    this.backupImage.addAncestor(image);<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>  /**<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * Set the incremental timestamp map directly.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @param incrTimestampMap timestamp map<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  public void setIncrTimestampMap(HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; incrTimestampMap) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.backupImage.setIncrTimeRanges(incrTimestampMap);<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>  public Map&lt;TableName, HashMap&lt;String, Long&gt;&gt; getIncrTimestampMap() {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return backupImage.getIncrTimeRanges();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Get the image list of this backup for restore in time order.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param reverse If true, then output in reverse order, otherwise in time order from old to new<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return the backup image list for restore in time order<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public ArrayList&lt;BackupImage&gt; getRestoreDependentList(boolean reverse) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    TreeMap&lt;Long, BackupImage&gt; restoreImages = new TreeMap&lt;&gt;();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    restoreImages.put(backupImage.startTs, backupImage);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    for (BackupImage image : backupImage.getAncestors()) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      restoreImages.put(Long.valueOf(image.startTs), image);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    return new ArrayList&lt;&gt;(reverse ? (restoreImages.descendingMap().values())<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        : (restoreImages.values()));<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>   * Get the dependent image list for a specific table of this backup in time order from old to new<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * if want to restore to this backup image level.<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param table table<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return the backup image list for a table in time order<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public ArrayList&lt;BackupImage&gt; getDependentListByTable(TableName table) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(true);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    for (BackupImage image : imageList) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      if (image.hasTable(table)) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>        tableImageList.add(image);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        if (image.getType() == BackupType.FULL) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>          break;<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>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    Collections.reverse(tableImageList);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    return tableImageList;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Get the full dependent image list in the whole dependency scope for a specific table of this<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * backup in time order from old to new.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * @param table table<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @return the full backup image list for a table in time order in the whole scope of the<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   *         dependency of this image<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  public ArrayList&lt;BackupImage&gt; getAllDependentListByTable(TableName table) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(false);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    for (BackupImage image : imageList) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      if (image.hasTable(table)) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        tableImageList.add(image);<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>    return tableImageList;<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>   * Check whether backup image1 could cover backup image2 or not.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @param image1 backup image 1<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @param image2 backup image 2<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * @return true if image1 can cover image2, otherwise false<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   */<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  public static boolean canCoverImage(BackupImage image1, BackupImage image2) {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    // image1 can cover image2 only when the following conditions are satisfied:<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    // - image1 must not be an incremental image;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    // - image1 must be taken after image2 has been taken;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    // - table set of image1 must cover the table set of image2.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      return false;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    if (image1.getStartTs() &lt; image2.getStartTs()) {<a name="line.588"></a>
+<span class="sourceLineNo">492</span>    LOG.info("Manifest file stored to " + manifestFilePath);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<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>   * Get this backup image.<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @return the backup image.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public BackupImage getBackupImage() {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    return backupImage;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>  /**<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * Add dependent backup image for this backup.<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * @param image The direct dependent backup image<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public void addDependentImage(BackupImage image) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    this.backupImage.addAncestor(image);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * Set the incremental timestamp map directly.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param incrTimestampMap timestamp map<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  public void setIncrTimestampMap(HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; incrTimestampMap) {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    this.backupImage.setIncrTimeRanges(incrTimestampMap);<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>  public Map&lt;TableName, HashMap&lt;String, Long&gt;&gt; getIncrTimestampMap() {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return backupImage.getIncrTimeRanges();<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Get the image list of this backup for restore in time order.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * @param reverse If true, then output in reverse order, otherwise in time order from old to new<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * @return the backup image list for restore in time order<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  public ArrayList&lt;BackupImage&gt; getRestoreDependentList(boolean reverse) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    TreeMap&lt;Long, BackupImage&gt; restoreImages = new TreeMap&lt;&gt;();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    restoreImages.put(backupImage.startTs, backupImage);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    for (BackupImage image : backupImage.getAncestors()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      restoreImages.put(Long.valueOf(image.startTs), image);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    return new ArrayList&lt;&gt;(reverse ? (restoreImages.descendingMap().values())<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        : (restoreImages.values()));<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>  /**<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * Get the dependent image list for a specific table of this backup in time order from old to new<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * if want to restore to this backup image level.<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * @param table table<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @return the backup image list for a table in time order<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   */<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public ArrayList&lt;BackupImage&gt; getDependentListByTable(TableName table) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(true);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    for (BackupImage image : imageList) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (image.hasTable(table)) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>        tableImageList.add(image);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>        if (image.getType() == BackupType.FULL) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          break;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        }<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      }<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    Collections.reverse(tableImageList);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return tableImageList;<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>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Get the full dependent image list in the whole dependency scope for a specific table of this<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * backup in time order from old to new.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @param table table<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * @return the full backup image list for a table in time order in the whole scope of the<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   *         dependency of this image<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   */<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public ArrayList&lt;BackupImage&gt; getAllDependentListByTable(TableName table) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(false);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    for (BackupImage image : imageList) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      if (image.hasTable(table)) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>        tableImageList.add(image);<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>    return tableImageList;<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>  /**<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * Check whether backup image1 could cover backup image2 or not.<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * @param image1 backup image 1<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   * @param image2 backup image 2<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * @return true if image1 can cover image2, otherwise false<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  public static boolean canCoverImage(BackupImage image1, BackupImage image2) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    // image1 can cover image2 only when the following conditions are satisfied:<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    // - image1 must not be an incremental image;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    // - image1 must be taken after image2 has been taken;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    // - table set of image1 must cover the table set of image2.<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.588"></a>
 <span class="sourceLineNo">589</span>      return false;<a name="line.589"></a>
 <span class="sourceLineNo">590</span>    }<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    List&lt;TableName&gt; image1TableList = image1.getTableNames();<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;TableName&gt; image2TableList = image2.getTableNames();<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    boolean found;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      found = false;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      for (int j = 0; j &lt; image1TableList.size(); j++) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        if (image2TableList.get(i).equals(image1TableList.get(j))) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>          found = true;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>          break;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      if (!found) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        return false;<a name="line.603"></a>
+<span class="sourceLineNo">591</span>    if (image1.getStartTs() &lt; image2.getStartTs()) {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      return false;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    List&lt;TableName&gt; image1TableList = image1.getTableNames();<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    List&lt;TableName&gt; image2TableList = image2.getTableNames();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    boolean found;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      found = false;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      for (int j = 0; j &lt; image1TableList.size(); j++) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        if (image2TableList.get(i).equals(image1TableList.get(j))) {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>          found = true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>          break;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        }<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>    LOG.debug("Backup image " + image1.getBackupId() + " can cover " + image2.getBackupId());<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    return true;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<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>   * Check whether backup image set could cover a backup image or not.<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @param fullImages The backup image set<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   * @param image The target backup image<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * @return true if fullImages can cover image, otherwise false<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  public static boolean canCoverImage(ArrayList&lt;BackupImage&gt; fullImages, BackupImage image) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    // fullImages can cover image only when the following conditions are satisfied:<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // - each image of fullImages must not be an incremental image;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    // - each image of fullImages must be taken after image has been taken;<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // - sum table set of fullImages must cover the table set of image.<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    for (BackupImage image1 : fullImages) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>        return false;<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      }<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      if (image1.getStartTs() &lt; image.getStartTs()) {<a name="line.626"></a>
+<span class="sourceLineNo">605</span>      if (!found) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<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><a name="line.609"></a>
+<span class="sourceLineNo">610</span>    LOG.debug("Backup image " + image1.getBackupId() + " can cover " + image2.getBackupId());<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    return true;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<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>   * Check whether backup image set could cover a backup image or not.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param fullImages The backup image set<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @param image The target backup image<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @return true if fullImages can cover image, otherwise false<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   */<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public static boolean canCoverImage(ArrayList&lt;BackupImage&gt; fullImages, BackupImage image) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    // fullImages can cover image only when the following conditions are satisfied:<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // - each image of fullImages must not be an incremental image;<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    // - each image of fullImages must be taken after image has been taken;<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    // - sum table set of fullImages must cover the table set of image.<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    for (BackupImage image1 : fullImages) {<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.626"></a>
 <span class="sourceLineNo">627</span>        return false;<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><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    ArrayList&lt;String&gt; image1TableList = new ArrayList&lt;&gt;();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    for (BackupImage image1 : fullImages) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      List&lt;TableName&gt; tableList = image1.getTableNames();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      for (TableName table : tableList) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        image1TableList.add(table.getNameAsString());<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>    ArrayList&lt;String&gt; image2TableList = new ArrayList&lt;&gt;();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    List&lt;TableName&gt; tableList = image.getTableNames();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    for (TableName table : tableList) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      image2TableList.add(table.getNameAsString());<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      if (image1TableList.contains(image2TableList.get(i)) == false) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        return false;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<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>    LOG.debug("Full image set can cover image " + image.getBackupId());<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    return true;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
-<span class="sourceLineNo">653</span><a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public BackupInfo toBackupInfo() {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    BackupInfo info = new BackupInfo();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    info.setType(backupImage.getType());<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    List&lt;TableName&gt; list = backupImage.getTableNames();<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    TableName[] tables = new TableName[list.size()];<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    info.addTables(list.toArray(tables));<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    info.setBackupId(backupImage.getBackupId());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    info.setStartTs(backupImage.getStartTs());<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    info.setBackupRootDir(backupImage.getRootDir());<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    if (backupImage.getType() == BackupType.INCREMENTAL) {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      info.setHLogTargetDir(BackupUtils.getLogBackupDir(backupImage.getRootDir(),<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        backupImage.getBackupId()));<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    return info;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>}<a name="line.669"></a>
+<span class="sourceLineNo">629</span>      if (image1.getStartTs() &lt; image.getStartTs()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        return false;<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>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ArrayList&lt;String&gt; image1TableList = new ArrayList&lt;&gt;();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    for (BackupImage image1 : fullImages) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      List&lt;TableName&gt; tableList = image1.getTableNames();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      for (TableName table : tableList) {<a name="line.637"></a>
+<span class="sourceLineNo">638</span>        image1TableList.add(table.getNameAsString());<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>    ArrayList&lt;String&gt; image2TableList = new ArrayList&lt;&gt;();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    List&lt;TableName&gt; tableList = image.getTableNames();<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    for (TableName table : tableList) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      image2TableList.add(table.getNameAsString());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      if (image1TableList.contains(image2TableList.get(i)) == false) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        return false;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>    LOG.debug("Full image set can cover image " + image.getBackupId());<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    return true;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public BackupInfo toBackupInfo() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    BackupInfo info = new BackupInfo();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    info.setType(backupImage.getType());<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    List&lt;TableName&gt; list = backupImage.getTableNames();<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    TableName[] tables = new TableName[list.size()];<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    info.addTables(list.toArray(tables));<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    info.setBackupId(backupImage.getBackupId());<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    info.setStartTs(backupImage.getStartTs());<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    info.setBackupRootDir(backupImage.getRootDir());<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    if (backupImage.getType() == BackupType.INCREMENTAL) {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      info.setHLogTargetDir(BackupUtils.getLogBackupDir(backupImage.getRootDir(),<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        backupImage.getBackupId()));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    return info;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>}<a name="line.672"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html
index ec2aa41..3d369e6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.BackupImage.html
@@ -442,239 +442,242 @@
 <span class="sourceLineNo">434</span>      for (FileStatus subFile : subFiles) {<a name="line.434"></a>
 <span class="sourceLineNo">435</span>        if (subFile.getPath().getName().equals(MANIFEST_FILE_NAME)) {<a name="line.435"></a>
 <span class="sourceLineNo">436</span>          // load and set manifest field from file content<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          FSDataInputStream in = fs.open(subFile.getPath());<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          long len = subFile.getLen();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          byte[] pbBytes = new byte[(int) len];<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          in.readFully(pbBytes);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          BackupProtos.BackupImage proto = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          try {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            proto = BackupProtos.BackupImage.parseFrom(pbBytes);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          } catch (Exception e) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            throw new BackupException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          this.backupImage = BackupImage.fromProto(proto);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          LOG.debug("Loaded manifest instance from manifest file: "<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              + BackupUtils.getPath(subFile.getPath()));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          return;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      String errorMsg = "No manifest file found in: " + backupPath.toString();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      throw new IOException(errorMsg);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    } catch (IOException e) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      throw new BackupException(e.getMessage());<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public BackupType getType() {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    return backupImage.getType();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  }<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>   * Get the table set of this image.<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @return The table set list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public List&lt;TableName&gt; getTableList() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return backupImage.getTableNames();<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>   * TODO: fix it. Persist the manifest file.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * @throws IOException IOException when storing the manifest file.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   */<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void store(Configuration conf) throws BackupException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    byte[] data = backupImage.toProto().toByteArray();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    // write the file, overwrite if already exist<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    Path manifestFilePath =<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        new Path(HBackupFileSystem.getBackupPath(backupImage.getRootDir(),<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          backupImage.getBackupId()), MANIFEST_FILE_NAME);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try (FSDataOutputStream out =<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        manifestFilePath.getFileSystem(conf).create(manifestFilePath, true)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      out.write(data);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    } catch (IOException e) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      throw new BackupException(e.getMessage());<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>    LOG.info("Manifest file stored to " + manifestFilePath);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
+<span class="sourceLineNo">437</span>          long len = subFile.getLen();<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          byte[] pbBytes = new byte[(int) len];<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          try (FSDataInputStream in = fs.open(subFile.getPath())) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            in.readFully(pbBytes);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          } catch (IOException e) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            throw new BackupException(e.getMessage());<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          BackupProtos.BackupImage proto = null;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          try {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            proto = BackupProtos.BackupImage.parseFrom(pbBytes);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          } catch (Exception e) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>            throw new BackupException(e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          this.backupImage = BackupImage.fromProto(proto);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.debug("Loaded manifest instance from manifest file: "<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              + BackupUtils.getPath(subFile.getPath()));<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          return;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      String errorMsg = "No manifest file found in: " + backupPath.toString();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      throw new IOException(errorMsg);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    } catch (IOException e) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      throw new BackupException(e.getMessage());<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><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public BackupType getType() {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    return backupImage.getType();<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>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Get the table set of this image.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @return The table set list<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   */<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  public List&lt;TableName&gt; getTableList() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return backupImage.getTableNames();<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>  /**<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * TODO: fix it. Persist the manifest file.<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @throws IOException IOException when storing the manifest file.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public void store(Configuration conf) throws BackupException {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    byte[] data = backupImage.toProto().toByteArray();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    // write the file, overwrite if already exist<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    Path manifestFilePath =<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        new Path(HBackupFileSystem.getBackupPath(backupImage.getRootDir(),<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          backupImage.getBackupId()), MANIFEST_FILE_NAME);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    try (FSDataOutputStream out =<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        manifestFilePath.getFileSystem(conf).create(manifestFilePath, true)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      out.write(data);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    } catch (IOException e) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new BackupException(e.getMessage());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
 <span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>  /**<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Get this backup image.<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @return the backup image.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   */<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  public BackupImage getBackupImage() {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    return backupImage;<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>   * Add dependent backup image for this backup.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param image The direct dependent backup image<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public void addDependentImage(BackupImage image) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    this.backupImage.addAncestor(image);<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>  /**<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * Set the incremental timestamp map directly.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @param incrTimestampMap timestamp map<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  public void setIncrTimestampMap(HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; incrTimestampMap) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.backupImage.setIncrTimeRanges(incrTimestampMap);<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>  public Map&lt;TableName, HashMap&lt;String, Long&gt;&gt; getIncrTimestampMap() {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return backupImage.getIncrTimeRanges();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Get the image list of this backup for restore in time order.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param reverse If true, then output in reverse order, otherwise in time order from old to new<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return the backup image list for restore in time order<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public ArrayList&lt;BackupImage&gt; getRestoreDependentList(boolean reverse) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    TreeMap&lt;Long, BackupImage&gt; restoreImages = new TreeMap&lt;&gt;();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    restoreImages.put(backupImage.startTs, backupImage);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    for (BackupImage image : backupImage.getAncestors()) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      restoreImages.put(Long.valueOf(image.startTs), image);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    return new ArrayList&lt;&gt;(reverse ? (restoreImages.descendingMap().values())<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        : (restoreImages.values()));<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>   * Get the dependent image list for a specific table of this backup in time order from old to new<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * if want to restore to this backup image level.<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param table table<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return the backup image list for a table in time order<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public ArrayList&lt;BackupImage&gt; getDependentListByTable(TableName table) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(true);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    for (BackupImage image : imageList) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      if (image.hasTable(table)) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>        tableImageList.add(image);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        if (image.getType() == BackupType.FULL) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>          break;<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>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    Collections.reverse(tableImageList);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    return tableImageList;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Get the full dependent image list in the whole dependency scope for a specific table of this<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * backup in time order from old to new.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * @param table table<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @return the full backup image list for a table in time order in the whole scope of the<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   *         dependency of this image<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  public ArrayList&lt;BackupImage&gt; getAllDependentListByTable(TableName table) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(false);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    for (BackupImage image : imageList) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      if (image.hasTable(table)) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        tableImageList.add(image);<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>    return tableImageList;<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>   * Check whether backup image1 could cover backup image2 or not.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @param image1 backup image 1<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @param image2 backup image 2<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * @return true if image1 can cover image2, otherwise false<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   */<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  public static boolean canCoverImage(BackupImage image1, BackupImage image2) {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    // image1 can cover image2 only when the following conditions are satisfied:<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    // - image1 must not be an incremental image;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    // - image1 must be taken after image2 has been taken;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    // - table set of image1 must cover the table set of image2.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      return false;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    if (image1.getStartTs() &lt; image2.getStartTs()) {<a name="line.588"></a>
+<span class="sourceLineNo">492</span>    LOG.info("Manifest file stored to " + manifestFilePath);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<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>   * Get this backup image.<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @return the backup image.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public BackupImage getBackupImage() {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    return backupImage;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>  /**<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * Add dependent backup image for this backup.<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * @param image The direct dependent backup image<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public void addDependentImage(BackupImage image) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    this.backupImage.addAncestor(image);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * Set the incremental timestamp map directly.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param incrTimestampMap timestamp map<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  public void setIncrTimestampMap(HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; incrTimestampMap) {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    this.backupImage.setIncrTimeRanges(incrTimestampMap);<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>  public Map&lt;TableName, HashMap&lt;String, Long&gt;&gt; getIncrTimestampMap() {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return backupImage.getIncrTimeRanges();<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Get the image list of this backup for restore in time order.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * @param reverse If true, then output in reverse order, otherwise in time order from old to new<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * @return the backup image list for restore in time order<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  public ArrayList&lt;BackupImage&gt; getRestoreDependentList(boolean reverse) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    TreeMap&lt;Long, BackupImage&gt; restoreImages = new TreeMap&lt;&gt;();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    restoreImages.put(backupImage.startTs, backupImage);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    for (BackupImage image : backupImage.getAncestors()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      restoreImages.put(Long.valueOf(image.startTs), image);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    return new ArrayList&lt;&gt;(reverse ? (restoreImages.descendingMap().values())<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        : (restoreImages.values()));<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>  /**<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * Get the dependent image list for a specific table of this backup in time order from old to new<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * if want to restore to this backup image level.<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * @param table table<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @return the backup image list for a table in time order<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   */<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public ArrayList&lt;BackupImage&gt; getDependentListByTable(TableName table) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(true);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    for (BackupImage image : imageList) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (image.hasTable(table)) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>        tableImageList.add(image);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>        if (image.getType() == BackupType.FULL) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          break;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        }<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      }<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    Collections.reverse(tableImageList);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return tableImageList;<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>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Get the full dependent image list in the whole dependency scope for a specific table of this<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * backup in time order from old to new.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @param table table<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * @return the full backup image list for a table in time order in the whole scope of the<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   *         dependency of this image<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   */<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public ArrayList&lt;BackupImage&gt; getAllDependentListByTable(TableName table) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(false);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    for (BackupImage image : imageList) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      if (image.hasTable(table)) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>        tableImageList.add(image);<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>    return tableImageList;<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>  /**<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * Check whether backup image1 could cover backup image2 or not.<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * @param image1 backup image 1<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   * @param image2 backup image 2<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * @return true if image1 can cover image2, otherwise false<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  public static boolean canCoverImage(BackupImage image1, BackupImage image2) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    // image1 can cover image2 only when the following conditions are satisfied:<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    // - image1 must not be an incremental image;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    // - image1 must be taken after image2 has been taken;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    // - table set of image1 must cover the table set of image2.<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.588"></a>
 <span class="sourceLineNo">589</span>      return false;<a name="line.589"></a>
 <span class="sourceLineNo">590</span>    }<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    List&lt;TableName&gt; image1TableList = image1.getTableNames();<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;TableName&gt; image2TableList = image2.getTableNames();<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    boolean found;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      found = false;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      for (int j = 0; j &lt; image1TableList.size(); j++) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        if (image2TableList.get(i).equals(image1TableList.get(j))) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>          found = true;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>          break;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      if (!found) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        return false;<a name="line.603"></a>
+<span class="sourceLineNo">591</span>    if (image1.getStartTs() &lt; image2.getStartTs()) {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      return false;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    List&lt;TableName&gt; image1TableList = image1.getTableNames();<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    List&lt;TableName&gt; image2TableList = image2.getTableNames();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    boolean found;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      found = false;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      for (int j = 0; j &lt; image1TableList.size(); j++) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        if (image2TableList.get(i).equals(image1TableList.get(j))) {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>          found = true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>          break;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        }<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>    LOG.debug("Backup image " + image1.getBackupId() + " can cover " + image2.getBackupId());<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    return true;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<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>   * Check whether backup image set could cover a backup image or not.<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @param fullImages The backup image set<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   * @param image The target backup image<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * @return true if fullImages can cover image, otherwise false<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  public static boolean canCoverImage(ArrayList&lt;BackupImage&gt; fullImages, BackupImage image) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    // fullImages can cover image only when the following conditions are satisfied:<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // - each image of fullImages must not be an incremental image;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    // - each image of fullImages must be taken after image has been taken;<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // - sum table set of fullImages must cover the table set of image.<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    for (BackupImage image1 : fullImages) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>        return false;<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      }<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      if (image1.getStartTs() &lt; image.getStartTs()) {<a name="line.626"></a>
+<span class="sourceLineNo">605</span>      if (!found) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<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><a name="line.609"></a>
+<span class="sourceLineNo">610</span>    LOG.debug("Backup image " + image1.getBackupId() + " can cover " + image2.getBackupId());<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    return true;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<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>   * Check whether backup image set could cover a backup image or not.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param fullImages The backup image set<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @param image The target backup image<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @return true if fullImages can cover image, otherwise false<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   */<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public static boolean canCoverImage(ArrayList&lt;BackupImage&gt; fullImages, BackupImage image) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    // fullImages can cover image only when the following conditions are satisfied:<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // - each image of fullImages must not be an incremental image;<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    // - each image of fullImages must be taken after image has been taken;<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    // - sum table set of fullImages must cover the table set of image.<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    for (BackupImage image1 : fullImages) {<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.626"></a>
 <span class="sourceLineNo">627</span>        return false;<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><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    ArrayList&lt;String&gt; image1TableList = new ArrayList&lt;&gt;();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    for (BackupImage image1 : fullImages) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      List&lt;TableName&gt; tableList = image1.getTableNames();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      for (TableName table : tableList) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        image1TableList.add(table.getNameAsString());<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>    ArrayList&lt;String&gt; image2TableList = new ArrayList&lt;&gt;();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    List&lt;TableName&gt; tableList = image.getTableNames();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    for (TableName table : tableList) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      image2TableList.add(table.getNameAsString());<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      if (image1TableList.contains(image2TableList.get(i)) == false) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        return false;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<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>    LOG.debug("Full image set can cover image " + image.getBackupId());<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    return true;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
-<span class="sourceLineNo">653</span><a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public BackupInfo toBackupInfo() {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    BackupInfo info = new BackupInfo();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    info.setType(backupImage.getType());<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    List&lt;TableName&gt; list = backupImage.getTableNames();<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    TableName[] tables = new TableName[list.size()];<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    info.addTables(list.toArray(tables));<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    info.setBackupId(backupImage.getBackupId());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    info.setStartTs(backupImage.getStartTs());<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    info.setBackupRootDir(backupImage.getRootDir());<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    if (backupImage.getType() == BackupType.INCREMENTAL) {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      info.setHLogTargetDir(BackupUtils.getLogBackupDir(backupImage.getRootDir(),<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        backupImage.getBackupId()));<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    return info;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>}<a name="line.669"></a>
+<span class="sourceLineNo">629</span>      if (image1.getStartTs() &lt; image.getStartTs()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        return false;<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>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ArrayList&lt;String&gt; image1TableList = new ArrayList&lt;&gt;();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    for (BackupImage image1 : fullImages) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      List&lt;TableName&gt; tableList = image1.getTableNames();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      for (TableName table : tableList) {<a name="line.637"></a>
+<span class="sourceLineNo">638</span>        image1TableList.add(table.getNameAsString());<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>    ArrayList&lt;String&gt; image2TableList = new ArrayList&lt;&gt;();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    List&lt;TableName&gt; tableList = image.getTableNames();<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    for (TableName table : tableList) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      image2TableList.add(table.getNameAsString());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      if (image1TableList.contains(image2TableList.get(i)) == false) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        return false;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>    LOG.debug("Full image set can cover image " + image.getBackupId());<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    return true;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public BackupInfo toBackupInfo() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    BackupInfo info = new BackupInfo();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    info.setType(backupImage.getType());<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    List&lt;TableName&gt; list = backupImage.getTableNames();<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    TableName[] tables = new TableName[list.size()];<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    info.addTables(list.toArray(tables));<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    info.setBackupId(backupImage.getBackupId());<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    info.setStartTs(backupImage.getStartTs());<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    info.setBackupRootDir(backupImage.getRootDir());<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    if (backupImage.getType() == BackupType.INCREMENTAL) {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      info.setHLogTargetDir(BackupUtils.getLogBackupDir(backupImage.getRootDir(),<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        backupImage.getBackupId()));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    return info;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>}<a name="line.672"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html
index ec2aa41..3d369e6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupManifest.html
@@ -442,239 +442,242 @@
 <span class="sourceLineNo">434</span>      for (FileStatus subFile : subFiles) {<a name="line.434"></a>
 <span class="sourceLineNo">435</span>        if (subFile.getPath().getName().equals(MANIFEST_FILE_NAME)) {<a name="line.435"></a>
 <span class="sourceLineNo">436</span>          // load and set manifest field from file content<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          FSDataInputStream in = fs.open(subFile.getPath());<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          long len = subFile.getLen();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          byte[] pbBytes = new byte[(int) len];<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          in.readFully(pbBytes);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          BackupProtos.BackupImage proto = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          try {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            proto = BackupProtos.BackupImage.parseFrom(pbBytes);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          } catch (Exception e) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            throw new BackupException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          this.backupImage = BackupImage.fromProto(proto);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          LOG.debug("Loaded manifest instance from manifest file: "<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              + BackupUtils.getPath(subFile.getPath()));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          return;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      String errorMsg = "No manifest file found in: " + backupPath.toString();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      throw new IOException(errorMsg);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    } catch (IOException e) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      throw new BackupException(e.getMessage());<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public BackupType getType() {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    return backupImage.getType();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  }<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>   * Get the table set of this image.<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @return The table set list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public List&lt;TableName&gt; getTableList() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return backupImage.getTableNames();<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>   * TODO: fix it. Persist the manifest file.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * @throws IOException IOException when storing the manifest file.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   */<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void store(Configuration conf) throws BackupException {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    byte[] data = backupImage.toProto().toByteArray();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    // write the file, overwrite if already exist<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    Path manifestFilePath =<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        new Path(HBackupFileSystem.getBackupPath(backupImage.getRootDir(),<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          backupImage.getBackupId()), MANIFEST_FILE_NAME);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try (FSDataOutputStream out =<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        manifestFilePath.getFileSystem(conf).create(manifestFilePath, true)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      out.write(data);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    } catch (IOException e) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      throw new BackupException(e.getMessage());<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>    LOG.info("Manifest file stored to " + manifestFilePath);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
+<span class="sourceLineNo">437</span>          long len = subFile.getLen();<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          byte[] pbBytes = new byte[(int) len];<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          try (FSDataInputStream in = fs.open(subFile.getPath())) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            in.readFully(pbBytes);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          } catch (IOException e) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            throw new BackupException(e.getMessage());<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          BackupProtos.BackupImage proto = null;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          try {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            proto = BackupProtos.BackupImage.parseFrom(pbBytes);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          } catch (Exception e) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>            throw new BackupException(e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          this.backupImage = BackupImage.fromProto(proto);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.debug("Loaded manifest instance from manifest file: "<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              + BackupUtils.getPath(subFile.getPath()));<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          return;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      String errorMsg = "No manifest file found in: " + backupPath.toString();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      throw new IOException(errorMsg);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    } catch (IOException e) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      throw new BackupException(e.getMessage());<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><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public BackupType getType() {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    return backupImage.getType();<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>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Get the table set of this image.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @return The table set list<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   */<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  public List&lt;TableName&gt; getTableList() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return backupImage.getTableNames();<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>  /**<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * TODO: fix it. Persist the manifest file.<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @throws IOException IOException when storing the manifest file.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public void store(Configuration conf) throws BackupException {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    byte[] data = backupImage.toProto().toByteArray();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    // write the file, overwrite if already exist<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    Path manifestFilePath =<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        new Path(HBackupFileSystem.getBackupPath(backupImage.getRootDir(),<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          backupImage.getBackupId()), MANIFEST_FILE_NAME);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    try (FSDataOutputStream out =<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        manifestFilePath.getFileSystem(conf).create(manifestFilePath, true)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      out.write(data);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    } catch (IOException e) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new BackupException(e.getMessage());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
 <span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>  /**<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Get this backup image.<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @return the backup image.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   */<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  public BackupImage getBackupImage() {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    return backupImage;<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>   * Add dependent backup image for this backup.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param image The direct dependent backup image<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public void addDependentImage(BackupImage image) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    this.backupImage.addAncestor(image);<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>  /**<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * Set the incremental timestamp map directly.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @param incrTimestampMap timestamp map<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  public void setIncrTimestampMap(HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; incrTimestampMap) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    this.backupImage.setIncrTimeRanges(incrTimestampMap);<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>  public Map&lt;TableName, HashMap&lt;String, Long&gt;&gt; getIncrTimestampMap() {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return backupImage.getIncrTimeRanges();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Get the image list of this backup for restore in time order.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param reverse If true, then output in reverse order, otherwise in time order from old to new<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return the backup image list for restore in time order<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public ArrayList&lt;BackupImage&gt; getRestoreDependentList(boolean reverse) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    TreeMap&lt;Long, BackupImage&gt; restoreImages = new TreeMap&lt;&gt;();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    restoreImages.put(backupImage.startTs, backupImage);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    for (BackupImage image : backupImage.getAncestors()) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      restoreImages.put(Long.valueOf(image.startTs), image);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    return new ArrayList&lt;&gt;(reverse ? (restoreImages.descendingMap().values())<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        : (restoreImages.values()));<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>   * Get the dependent image list for a specific table of this backup in time order from old to new<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * if want to restore to this backup image level.<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param table table<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return the backup image list for a table in time order<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public ArrayList&lt;BackupImage&gt; getDependentListByTable(TableName table) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(true);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    for (BackupImage image : imageList) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      if (image.hasTable(table)) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>        tableImageList.add(image);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        if (image.getType() == BackupType.FULL) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>          break;<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>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    Collections.reverse(tableImageList);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    return tableImageList;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Get the full dependent image list in the whole dependency scope for a specific table of this<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * backup in time order from old to new.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * @param table table<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @return the full backup image list for a table in time order in the whole scope of the<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   *         dependency of this image<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  public ArrayList&lt;BackupImage&gt; getAllDependentListByTable(TableName table) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(false);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    for (BackupImage image : imageList) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      if (image.hasTable(table)) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        tableImageList.add(image);<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>    return tableImageList;<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>   * Check whether backup image1 could cover backup image2 or not.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @param image1 backup image 1<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @param image2 backup image 2<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * @return true if image1 can cover image2, otherwise false<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   */<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  public static boolean canCoverImage(BackupImage image1, BackupImage image2) {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    // image1 can cover image2 only when the following conditions are satisfied:<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    // - image1 must not be an incremental image;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    // - image1 must be taken after image2 has been taken;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    // - table set of image1 must cover the table set of image2.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      return false;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    if (image1.getStartTs() &lt; image2.getStartTs()) {<a name="line.588"></a>
+<span class="sourceLineNo">492</span>    LOG.info("Manifest file stored to " + manifestFilePath);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<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>   * Get this backup image.<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @return the backup image.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public BackupImage getBackupImage() {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    return backupImage;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>  /**<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * Add dependent backup image for this backup.<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * @param image The direct dependent backup image<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public void addDependentImage(BackupImage image) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    this.backupImage.addAncestor(image);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * Set the incremental timestamp map directly.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param incrTimestampMap timestamp map<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  public void setIncrTimestampMap(HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; incrTimestampMap) {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    this.backupImage.setIncrTimeRanges(incrTimestampMap);<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>  public Map&lt;TableName, HashMap&lt;String, Long&gt;&gt; getIncrTimestampMap() {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return backupImage.getIncrTimeRanges();<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Get the image list of this backup for restore in time order.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * @param reverse If true, then output in reverse order, otherwise in time order from old to new<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * @return the backup image list for restore in time order<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  public ArrayList&lt;BackupImage&gt; getRestoreDependentList(boolean reverse) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    TreeMap&lt;Long, BackupImage&gt; restoreImages = new TreeMap&lt;&gt;();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    restoreImages.put(backupImage.startTs, backupImage);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    for (BackupImage image : backupImage.getAncestors()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      restoreImages.put(Long.valueOf(image.startTs), image);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    return new ArrayList&lt;&gt;(reverse ? (restoreImages.descendingMap().values())<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        : (restoreImages.values()));<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>  /**<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * Get the dependent image list for a specific table of this backup in time order from old to new<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * if want to restore to this backup image level.<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * @param table table<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @return the backup image list for a table in time order<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   */<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public ArrayList&lt;BackupImage&gt; getDependentListByTable(TableName table) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(true);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    for (BackupImage image : imageList) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (image.hasTable(table)) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>        tableImageList.add(image);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>        if (image.getType() == BackupType.FULL) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          break;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        }<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      }<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    Collections.reverse(tableImageList);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return tableImageList;<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>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Get the full dependent image list in the whole dependency scope for a specific table of this<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * backup in time order from old to new.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @param table table<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * @return the full backup image list for a table in time order in the whole scope of the<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   *         dependency of this image<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   */<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public ArrayList&lt;BackupImage&gt; getAllDependentListByTable(TableName table) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    ArrayList&lt;BackupImage&gt; tableImageList = new ArrayList&lt;&gt;();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    ArrayList&lt;BackupImage&gt; imageList = getRestoreDependentList(false);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    for (BackupImage image : imageList) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      if (image.hasTable(table)) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>        tableImageList.add(image);<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>    return tableImageList;<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>  /**<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * Check whether backup image1 could cover backup image2 or not.<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * @param image1 backup image 1<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   * @param image2 backup image 2<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * @return true if image1 can cover image2, otherwise false<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  public static boolean canCoverImage(BackupImage image1, BackupImage image2) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    // image1 can cover image2 only when the following conditions are satisfied:<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    // - image1 must not be an incremental image;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    // - image1 must be taken after image2 has been taken;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    // - table set of image1 must cover the table set of image2.<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.588"></a>
 <span class="sourceLineNo">589</span>      return false;<a name="line.589"></a>
 <span class="sourceLineNo">590</span>    }<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    List&lt;TableName&gt; image1TableList = image1.getTableNames();<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;TableName&gt; image2TableList = image2.getTableNames();<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    boolean found;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      found = false;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      for (int j = 0; j &lt; image1TableList.size(); j++) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        if (image2TableList.get(i).equals(image1TableList.get(j))) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>          found = true;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>          break;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      if (!found) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        return false;<a name="line.603"></a>
+<span class="sourceLineNo">591</span>    if (image1.getStartTs() &lt; image2.getStartTs()) {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      return false;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    List&lt;TableName&gt; image1TableList = image1.getTableNames();<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    List&lt;TableName&gt; image2TableList = image2.getTableNames();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    boolean found;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      found = false;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      for (int j = 0; j &lt; image1TableList.size(); j++) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        if (image2TableList.get(i).equals(image1TableList.get(j))) {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>          found = true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>          break;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        }<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>    LOG.debug("Backup image " + image1.getBackupId() + " can cover " + image2.getBackupId());<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    return true;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<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>   * Check whether backup image set could cover a backup image or not.<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @param fullImages The backup image set<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   * @param image The target backup image<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * @return true if fullImages can cover image, otherwise false<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  public static boolean canCoverImage(ArrayList&lt;BackupImage&gt; fullImages, BackupImage image) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    // fullImages can cover image only when the following conditions are satisfied:<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // - each image of fullImages must not be an incremental image;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    // - each image of fullImages must be taken after image has been taken;<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // - sum table set of fullImages must cover the table set of image.<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    for (BackupImage image1 : fullImages) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>        return false;<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      }<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      if (image1.getStartTs() &lt; image.getStartTs()) {<a name="line.626"></a>
+<span class="sourceLineNo">605</span>      if (!found) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<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><a name="line.609"></a>
+<span class="sourceLineNo">610</span>    LOG.debug("Backup image " + image1.getBackupId() + " can cover " + image2.getBackupId());<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    return true;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<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>   * Check whether backup image set could cover a backup image or not.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param fullImages The backup image set<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @param image The target backup image<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @return true if fullImages can cover image, otherwise false<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   */<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  public static boolean canCoverImage(ArrayList&lt;BackupImage&gt; fullImages, BackupImage image) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    // fullImages can cover image only when the following conditions are satisfied:<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // - each image of fullImages must not be an incremental image;<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    // - each image of fullImages must be taken after image has been taken;<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    // - sum table set of fullImages must cover the table set of image.<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    for (BackupImage image1 : fullImages) {<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      if (image1.getType() == BackupType.INCREMENTAL) {<a name="line.626"></a>
 <span class="sourceLineNo">627</span>        return false;<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><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    ArrayList&lt;String&gt; image1TableList = new ArrayList&lt;&gt;();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    for (BackupImage image1 : fullImages) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      List&lt;TableName&gt; tableList = image1.getTableNames();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      for (TableName table : tableList) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        image1TableList.add(table.getNameAsString());<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>    ArrayList&lt;String&gt; image2TableList = new ArrayList&lt;&gt;();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    List&lt;TableName&gt; tableList = image.getTableNames();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    for (TableName table : tableList) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      image2TableList.add(table.getNameAsString());<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      if (image1TableList.contains(image2TableList.get(i)) == false) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        return false;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<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>    LOG.debug("Full image set can cover image " + image.getBackupId());<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    return true;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
-<span class="sourceLineNo">653</span><a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public BackupInfo toBackupInfo() {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    BackupInfo info = new BackupInfo();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    info.setType(backupImage.getType());<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    List&lt;TableName&gt; list = backupImage.getTableNames();<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    TableName[] tables = new TableName[list.size()];<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    info.addTables(list.toArray(tables));<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    info.setBackupId(backupImage.getBackupId());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    info.setStartTs(backupImage.getStartTs());<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    info.setBackupRootDir(backupImage.getRootDir());<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    if (backupImage.getType() == BackupType.INCREMENTAL) {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      info.setHLogTargetDir(BackupUtils.getLogBackupDir(backupImage.getRootDir(),<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        backupImage.getBackupId()));<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    return info;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>}<a name="line.669"></a>
+<span class="sourceLineNo">629</span>      if (image1.getStartTs() &lt; image.getStartTs()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        return false;<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>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>    ArrayList&lt;String&gt; image1TableList = new ArrayList&lt;&gt;();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    for (BackupImage image1 : fullImages) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      List&lt;TableName&gt; tableList = image1.getTableNames();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      for (TableName table : tableList) {<a name="line.637"></a>
+<span class="sourceLineNo">638</span>        image1TableList.add(table.getNameAsString());<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>    ArrayList&lt;String&gt; image2TableList = new ArrayList&lt;&gt;();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    List&lt;TableName&gt; tableList = image.getTableNames();<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    for (TableName table : tableList) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      image2TableList.add(table.getNameAsString());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    for (int i = 0; i &lt; image2TableList.size(); i++) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      if (image1TableList.contains(image2TableList.get(i)) == false) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        return false;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>    LOG.debug("Full image set can cover image " + image.getBackupId());<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    return true;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public BackupInfo toBackupInfo() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    BackupInfo info = new BackupInfo();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    info.setType(backupImage.getType());<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    List&lt;TableName&gt; list = backupImage.getTableNames();<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    TableName[] tables = new TableName[list.size()];<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    info.addTables(list.toArray(tables));<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    info.setBackupId(backupImage.getBackupId());<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    info.setStartTs(backupImage.getStartTs());<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    info.setBackupRootDir(backupImage.getRootDir());<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    if (backupImage.getType() == BackupType.INCREMENTAL) {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      info.setHLogTargetDir(BackupUtils.getLogBackupDir(backupImage.getRootDir(),<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        backupImage.getBackupId()));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    return info;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>}<a name="line.672"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/FutureUtils.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/FutureUtils.html
index 29e0599..a59fc89 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/FutureUtils.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/FutureUtils.html
@@ -40,139 +40,168 @@
 <span class="sourceLineNo">032</span>import org.slf4j.Logger;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.slf4j.LoggerFactory;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>/**<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * Helper class for processing futures.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> */<a name="line.39"></a>
-<span class="sourceLineNo">040</span>@InterfaceAudience.Private<a name="line.40"></a>
-<span class="sourceLineNo">041</span>public final class FutureUtils {<a name="line.41"></a>
+<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * Helper class for processing futures.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public final class FutureUtils {<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private static final Logger LOG = LoggerFactory.getLogger(FutureUtils.class);<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private static final Logger LOG = LoggerFactory.getLogger(FutureUtils.class);<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private FutureUtils() {<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  }<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  /**<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * This is method is used when you just want to add a listener to the given future. We will call<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * {@link CompletableFuture#whenComplete(BiConsumer)} to register the {@code action} to the<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * {@code future}. Ignoring the return value of a Future is considered as a bad practice as it may<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * suppress exceptions thrown from the code that completes the future, and this method will catch<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * all the exception thrown from the {@code action} to catch possible code bugs.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * &lt;p/&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * And the error phone check will always report FutureReturnValueIgnored because every method in<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * the {@link CompletableFuture} class will return a new {@link CompletableFuture}, so you always<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * have one future that has not been checked. So we introduce this method and add a suppress<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * warnings annotation here.<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  public static &lt;T&gt; void addListener(CompletableFuture&lt;T&gt; future,<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      BiConsumer&lt;? super T, ? super Throwable&gt; action) {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    future.whenComplete((resp, error) -&gt; {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      try {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        // See this post on stack overflow(shorten since the url is too long),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>        // https://s.apache.org/completionexception<a name="line.66"></a>
-<span class="sourceLineNo">067</span>        // For a chain of CompleableFuture, only the first child CompletableFuture can get the<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        // original exception, others will get a CompletionException, which wraps the original<a name="line.68"></a>
-<span class="sourceLineNo">069</span>        // exception. So here we unwrap it before passing it to the callback action.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        action.accept(resp, unwrapCompletionException(error));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      } catch (Throwable t) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        LOG.error("Unexpected error caught when processing CompletableFuture", t);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      }<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    });<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>  /**<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * Almost the same with {@link #addListener(CompletableFuture, BiConsumer)} method above, the only<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * exception is that we will call<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * {@link CompletableFuture#whenCompleteAsync(BiConsumer, Executor)}.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * @see #addListener(CompletableFuture, BiConsumer)<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public static &lt;T&gt; void addListener(CompletableFuture&lt;T&gt; future,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      BiConsumer&lt;? super T, ? super Throwable&gt; action, Executor executor) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    future.whenCompleteAsync((resp, error) -&gt; {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      try {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>        action.accept(resp, unwrapCompletionException(error));<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      } catch (Throwable t) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        LOG.error("Unexpected error caught when processing CompletableFuture", t);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    }, executor);<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>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Return a {@link CompletableFuture} which is same with the given {@code future}, but execute all<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * the callbacks in the given {@code executor}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static &lt;T&gt; CompletableFuture&lt;T&gt; wrapFuture(CompletableFuture&lt;T&gt; future,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      Executor executor) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    CompletableFuture&lt;T&gt; wrappedFuture = new CompletableFuture&lt;&gt;();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    addListener(future, (r, e) -&gt; {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      if (e != null) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        wrappedFuture.completeExceptionally(e);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      } else {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        wrappedFuture.complete(r);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }, executor);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return wrappedFuture;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * Get the cause of the {@link Throwable} if it is a {@link CompletionException}.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public static Throwable unwrapCompletionException(Throwable error) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    if (error instanceof CompletionException) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Throwable cause = error.getCause();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      if (cause != null) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        return cause;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return error;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * A helper class for getting the result of a Future, and convert the error to an<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * {@link IOException}.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public static &lt;T&gt; T get(Future&lt;T&gt; future) throws IOException {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    try {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      return future.get();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    } catch (InterruptedException e) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      throw (IOException) new InterruptedIOException().initCause(e);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    } catch (ExecutionException e) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      Throwable cause = e.getCause();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      Throwables.propagateIfPossible(cause, IOException.class);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      throw new IOException(cause);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  /**<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * A helper class for getting the result of a Future with timeout, and convert the error to an<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * {@link IOException}.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static &lt;T&gt; T get(Future&lt;T&gt; future, long timeout, TimeUnit unit) throws IOException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    try {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      return future.get(timeout, unit);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    } catch (InterruptedException e) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      throw (IOException) new InterruptedIOException().initCause(e);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    } catch (ExecutionException e) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      Throwable cause = e.getCause();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Throwables.propagateIfPossible(cause, IOException.class);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throw new IOException(cause);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    } catch (TimeoutException e) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      throw new TimeoutIOException(e);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * Returns a CompletableFuture that is already completed exceptionally with the given exception.<a name="line.160"></a>
+<span class="sourceLineNo">043</span>  private FutureUtils() {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * This is method is used when you just want to add a listener to the given future. We will call<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * {@link CompletableFuture#whenComplete(BiConsumer)} to register the {@code action} to the<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   * {@code future}. Ignoring the return value of a Future is considered as a bad practice as it may<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   * suppress exceptions thrown from the code that completes the future, and this method will catch<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   * all the exception thrown from the {@code action} to catch possible code bugs.<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * &lt;p/&gt;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * And the error phone check will always report FutureReturnValueIgnored because every method in<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * the {@link CompletableFuture} class will return a new {@link CompletableFuture}, so you always<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * have one future that has not been checked. So we introduce this method and add a suppress<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * warnings annotation here.<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public static &lt;T&gt; void addListener(CompletableFuture&lt;T&gt; future,<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      BiConsumer&lt;? super T, ? super Throwable&gt; action) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    future.whenComplete((resp, error) -&gt; {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      try {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>        // See this post on stack overflow(shorten since the url is too long),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        // https://s.apache.org/completionexception<a name="line.64"></a>
+<span class="sourceLineNo">065</span>        // For a chain of CompleableFuture, only the first child CompletableFuture can get the<a name="line.65"></a>
+<span class="sourceLineNo">066</span>        // original exception, others will get a CompletionException, which wraps the original<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        // exception. So here we unwrap it before passing it to the callback action.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        action.accept(resp, unwrapCompletionException(error));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      } catch (Throwable t) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        LOG.error("Unexpected error caught when processing CompletableFuture", t);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      }<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    });<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  /**<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * Almost the same with {@link #addListener(CompletableFuture, BiConsumer)} method above, the only<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * exception is that we will call<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * {@link CompletableFuture#whenCompleteAsync(BiConsumer, Executor)}.<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @see #addListener(CompletableFuture, BiConsumer)<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static &lt;T&gt; void addListener(CompletableFuture&lt;T&gt; future,<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      BiConsumer&lt;? super T, ? super Throwable&gt; action, Executor executor) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    future.whenCompleteAsync((resp, error) -&gt; {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      try {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        action.accept(resp, unwrapCompletionException(error));<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      } catch (Throwable t) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        LOG.error("Unexpected error caught when processing CompletableFuture", t);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }, executor);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  /**<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   * Return a {@link CompletableFuture} which is same with the given {@code future}, but execute all<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   * the callbacks in the given {@code executor}.<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static &lt;T&gt; CompletableFuture&lt;T&gt; wrapFuture(CompletableFuture&lt;T&gt; future,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      Executor executor) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    CompletableFuture&lt;T&gt; wrappedFuture = new CompletableFuture&lt;&gt;();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    addListener(future, (r, e) -&gt; {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      if (e != null) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        wrappedFuture.completeExceptionally(e);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      } else {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        wrappedFuture.complete(r);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }, executor);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return wrappedFuture;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * Get the cause of the {@link Throwable} if it is a {@link CompletionException}.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public static Throwable unwrapCompletionException(Throwable error) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    if (error instanceof CompletionException) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      Throwable cause = error.getCause();<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (cause != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        return cause;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return error;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  // This method is used to record the stack trace that calling the FutureUtils.get method. As in<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  // async client, the retry will be done in the retry timer thread, so the exception we get from<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  // the CompletableFuture will have a stack trace starting from the root of the retry timer. If we<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  // just throw this exception out when calling future.get(by unwrapping the ExecutionException),<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  // the upper layer even can not know where is the exception thrown...<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  // See HBASE-22316.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static void setStackTrace(Throwable error) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    StackTraceElement[] localStackTrace = Thread.currentThread().getStackTrace();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    StackTraceElement[] originalStackTrace = error.getStackTrace();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    StackTraceElement[] newStackTrace =<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      new StackTraceElement[localStackTrace.length + originalStackTrace.length + 1];<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    System.arraycopy(localStackTrace, 0, newStackTrace, 0, localStackTrace.length);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    newStackTrace[localStackTrace.length] =<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      new StackTraceElement("--------Future", "get--------", null, -1);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    System.arraycopy(originalStackTrace, 0, newStackTrace, localStackTrace.length + 1,<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      originalStackTrace.length);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    error.setStackTrace(newStackTrace);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private static IOException rethrow(ExecutionException error) throws IOException {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Throwable cause = error.getCause();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    if (cause instanceof IOException) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      setStackTrace(cause);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      throw (IOException) cause;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    } else if (cause instanceof RuntimeException) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      setStackTrace(cause);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throw (RuntimeException) cause;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    } else if (cause instanceof Error) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      setStackTrace(cause);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      throw (Error) cause;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      throw new IOException(cause);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * A helper class for getting the result of a Future, and convert the error to an<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * {@link IOException}.<a name="line.160"></a>
 <span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public static &lt;T&gt; CompletableFuture&lt;T&gt; failedFuture(Throwable e) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    future.completeExceptionally(e);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return future;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>}<a name="line.167"></a>
+<span class="sourceLineNo">162</span>  public static &lt;T&gt; T get(Future&lt;T&gt; future) throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    try {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return future.get();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    } catch (InterruptedException e) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      throw (IOException) new InterruptedIOException().initCause(e);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    } catch (ExecutionException e) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      throw rethrow(e);<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><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * A helper class for getting the result of a Future with timeout, and convert the error to an<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * {@link IOException}.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public static &lt;T&gt; T get(Future&lt;T&gt; future, long timeout, TimeUnit unit) throws IOException {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    try {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      return future.get(timeout, unit);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } catch (InterruptedException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      throw (IOException) new InterruptedIOException().initCause(e);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    } catch (ExecutionException e) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      throw rethrow(e);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    } catch (TimeoutException e) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      throw new TimeoutIOException(e);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<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>   * Returns a CompletableFuture that is already completed exceptionally with the given exception.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  public static &lt;T&gt; CompletableFuture&lt;T&gt; failedFuture(Throwable e) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    future.completeExceptionally(e);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    return future;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>}<a name="line.196"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/UnsafeAccess.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/UnsafeAccess.html
index 4a8cf3e..ae86ecc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/UnsafeAccess.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/UnsafeAccess.html
@@ -341,7 +341,7 @@
 <span class="sourceLineNo">333</span>  private static void unsafeCopy(Object src, long srcAddr, Object dst, long destAddr, long len) {<a name="line.333"></a>
 <span class="sourceLineNo">334</span>    while (len &gt; 0) {<a name="line.334"></a>
 <span class="sourceLineNo">335</span>      long size = (len &gt; UNSAFE_COPY_THRESHOLD) ? UNSAFE_COPY_THRESHOLD : len;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      theUnsafe.copyMemory(src, srcAddr, dst, destAddr, len);<a name="line.336"></a>
+<span class="sourceLineNo">336</span>      theUnsafe.copyMemory(src, srcAddr, dst, destAddr, size);<a name="line.336"></a>
 <span class="sourceLineNo">337</span>      len -= size;<a name="line.337"></a>
 <span class="sourceLineNo">338</span>      srcAddr += size;<a name="line.338"></a>
 <span class="sourceLineNo">339</span>      destAddr += size;<a name="line.339"></a>
diff --git a/downloads.html b/downloads.html
index c6bb4c4..55e3b0b 100644
--- a/downloads.html
+++ b/downloads.html
@@ -401,7 +401,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index a73e5cd..b71a18b 100644
--- a/export_control.html
+++ b/export_control.html
@@ -187,7 +187,7 @@ for more details.</p>
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index f14549c..9196872 100644
--- a/index.html
+++ b/index.html
@@ -269,7 +269,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-management.html b/issue-management.html
index 17b1654..df5d792 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -159,7 +159,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/licenses.html b/licenses.html
index 42180f4..28be356 100644
--- a/licenses.html
+++ b/licenses.html
@@ -362,7 +362,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/mailing-lists.html b/mailing-lists.html
index 943473d..b9df87f 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -212,7 +212,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index 2d4ac19..3d22425 100644
--- a/metrics.html
+++ b/metrics.html
@@ -315,7 +315,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index a947a3c..82618af 100644
--- a/old_news.html
+++ b/old_news.html
@@ -296,7 +296,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index e66c817..4837c78 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -311,7 +311,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index 0abb6f7..a160125 100644
--- a/plugins.html
+++ b/plugins.html
@@ -238,7 +238,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index c8d9878..3bbd2e2 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -625,7 +625,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index e3a2a2d..f3c444d 100644
--- a/project-info.html
+++ b/project-info.html
@@ -203,7 +203,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index a809b1d..49cba13 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -176,7 +176,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 078c3f6..ac40b0d 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -164,7 +164,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index 6f80fb7..ef43058 100644
--- a/replication.html
+++ b/replication.html
@@ -159,7 +159,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index d8e13ba..d837f3d 100644
--- a/resources.html
+++ b/resources.html
@@ -187,7 +187,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/scm.html b/scm.html
index 19bab0b..e45f5c2 100644
--- a/scm.html
+++ b/scm.html
@@ -170,7 +170,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index d634d62..a5a80d9 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -189,7 +189,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/summary.html b/summary.html
index da75a1e..c56ce1e 100644
--- a/summary.html
+++ b/summary.html
@@ -202,7 +202,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index ac32965..ff6f8a3 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -376,7 +376,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team.html b/team.html
index b40f822..55b032e 100644
--- a/team.html
+++ b/team.html
@@ -649,7 +649,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-30</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 7c0391f..290eb2f 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1208,6 +1208,7 @@
 <li><a href="org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.html" title="class in org.apache.hadoop.hbase.backup" target="classFrame">TestFullBackupWithFailures</a></li>
 <li><a href="org/apache/hadoop/hbase/TestFullLogReconstruction.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestFullLogReconstruction</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/TestFullRestore.html" title="class in org.apache.hadoop.hbase.backup" target="classFrame">TestFullRestore</a></li>
+<li><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestFutureUtils</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestFuzzyRowAndColumnRangeFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowFilter.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestFuzzyRowFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestFuzzyRowFilterEndToEnd</a></li>
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index df074db..05d022c 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1208,6 +1208,7 @@
 <li><a href="org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.html" title="class in org.apache.hadoop.hbase.backup">TestFullBackupWithFailures</a></li>
 <li><a href="org/apache/hadoop/hbase/TestFullLogReconstruction.html" title="class in org.apache.hadoop.hbase">TestFullLogReconstruction</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/TestFullRestore.html" title="class in org.apache.hadoop.hbase.backup">TestFullRestore</a></li>
+<li><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class in org.apache.hadoop.hbase.filter">TestFuzzyRowAndColumnRangeFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowFilter.html" title="class in org.apache.hadoop.hbase.filter">TestFuzzyRowFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.html" title="class in org.apache.hadoop.hbase.filter">TestFuzzyRowFilterEndToEnd</a></li>
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 964cc08..f4ab765 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -3230,8 +3230,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestWideScanner.html#C">C</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#c--">c()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStatusSourceStartedTargetStoppedNoOps</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.html#c">c</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationWALEntryFilters</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html#c0">c0</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeepDeletes</a></dt>
@@ -6977,6 +6975,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSVisitor.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util">TestFSVisitor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckCleanReplicationBarriers</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckComparator</a></dt>
@@ -14399,6 +14399,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure/SimpleRSProcedureManager.SimpleSubprocedurePool.html#executor">executor</a></span> - Variable in class org.apache.hadoop.hbase.procedure.<a href="org/apache/hadoop/hbase/procedure/SimpleRSProcedureManager.SimpleSubprocedurePool.html" title="class in org.apache.hadoop.hbase.procedure">SimpleRSProcedureManager.SimpleSubprocedurePool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html#executor">executor</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestRegionStates.html#executorService">executorService</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRegionStates</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.html#executorService">executorService</a></span> - Static variable in class org.apache.hadoop.hbase.mttr.<a href="org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.html" title="class in org.apache.hadoop.hbase.mttr">IntegrationTestMTTR</a></dt>
@@ -39951,6 +39953,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSVisitor.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util">TestFSVisitor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckCleanReplicationBarriers</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckEncryption</a></dt>
@@ -45498,6 +45502,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSVisitor.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util">TestFSVisitor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckCleanReplicationBarriers</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckEncryption</a></dt>
@@ -54615,6 +54621,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestProcedureFuture.TestFuture.html#TestFuture-org.apache.hadoop.hbase.client.HBaseAdmin-java.lang.Long-">TestFuture(HBaseAdmin, Long)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestProcedureFuture.TestFuture.html" title="class in org.apache.hadoop.hbase.client">TestProcedureFuture.TestFuture</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFutureUtils</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html#TestFutureUtils--">TestFutureUtils()</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestFuzzyRowAndColumnRangeFilter</span></a> - Class in <a href="org/apache/hadoop/hbase/filter/package-summary.html">org.apache.hadoop.hbase.filter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html#TestFuzzyRowAndColumnRangeFilter--">TestFuzzyRowAndColumnRangeFilter()</a></span> - Constructor for class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class in org.apache.hadoop.hbase.filter">TestFuzzyRowAndColumnRangeFilter</a></dt>
@@ -61972,6 +61982,8 @@
 <dd>
 <div class="block">Test the whole reconstruction loop.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFutureUtils.html#testRecordStackTrace--">testRecordStackTrace()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutput.html#testRecover--">testRecover()</a></span> - Method in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/TestFanOutOneBlockAsyncDFSOutput.html" title="class in org.apache.hadoop.hbase.io.asyncfs">TestFanOutOneBlockAsyncDFSOutput</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestRecoverableZooKeeper</span></a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
@@ -63520,6 +63532,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#TestReplicationStatusSourceStartedTargetStoppedNoOps--">TestReplicationStatusSourceStartedTargetStoppedNoOps()</a></span> - Constructor for class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSt [...]
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#testReplicationStatusSourceStartedTargetStoppedNoOps--">testReplicationStatusSourceStartedTargetStoppedNoOps()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStatusSo [...]
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestReplicationStatusSourceStartedTargetStoppedWithRecovery</span></a> - Class in <a href="org/apache/hadoop/hbase/replication/package-summary.html">org.apache.hadoop.hbase.replication</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html#TestReplicationStatusSourceStartedTargetStoppedWithRecovery--">TestReplicationStatusSourceStartedTargetStoppedWithRecovery()</a></span> - Constructor for class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html" title="class in org.apache.hadoop.hbase.re [...]
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 56b8075..f8e6801 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -6929,154 +6929,158 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRetryCounter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFutureUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestThreadLocalPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRetryCounter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReusablePoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestThreadLocalPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRoundRobinPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRoundRobinPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReusablePoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRoundRobinPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRoundRobinPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRootPath.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionSplitter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRootPath.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckComparator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckMOB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckComparator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestByteBuffUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestByteBuffUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckMOB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSTableDescriptors.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSTableDescriptors.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestByteBuffUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestByteBuffUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDefaultEnvironmentEdge.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSTableDescriptors.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSTableDescriptors.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultEnvironmentEdge.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSortedList.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBloomFilterChunk.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBloomFilterChunk.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSortedList.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSHDFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSHDFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBloomFilterChunk.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBloomFilterChunk.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestConfigurationUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConfigurationUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSHDFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSHDFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSVisitor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestConfigurationUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConfigurationUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIdLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSVisitor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckEncryption.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIdLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStealJobQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestStealJobQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckEncryption.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadEncoded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStealJobQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestStealJobQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionMover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionMover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadEncoded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestConnectionCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConnectionCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionMover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionMover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestJSONMetricUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestJSONMetricUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestConnectionCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConnectionCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHFileArchiveUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestJSONMetricUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestJSONMetricUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckCleanReplicationBarriers.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHFileArchiveUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCoprocessorScanPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckCleanReplicationBarriers.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadSequential.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCoprocessorScanPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSide3WoUnsafe.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadSequential.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestLossyCounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestLossyCounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSide3WoUnsafe.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEncryptionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestEncryptionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestLossyCounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestLossyCounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompressionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCompressionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestEncryptionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIdReadWriteLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdReadWriteLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompressionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCompressionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBoundedPriorityBlockingQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIdReadWriteLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdReadWriteLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBoundedPriorityBlockingQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionSplitCalculator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitCalculator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestIncrementingEnvironmentEdge.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 3d3887a..ce0d47a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -160,8 +160,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index accf246..4319b9b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 64b73da..4d2a0a6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -242,9 +242,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 7f4a21c..a2a093d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -707,11 +707,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
index 1f9b3be..a51aca3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
@@ -179,7 +179,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#c--">c</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#testReplicationStatusSourceStartedTargetStoppedNoOps--">testReplicationStatusSourceStartedTargetStoppedNoOps</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -244,14 +244,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="c--">
+<a name="testReplicationStatusSourceStartedTargetStoppedNoOps--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>c</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#line.44">c</a>()
-       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<h4>testReplicationStatusSourceStartedTargetStoppedNoOps</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#line.44">testReplicationStatusSourceStartedTargetStoppedNoOps</a>()
+                                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index b428734..f4e98ea 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/TestFSVisitor.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestFSVisitor.html
index 0947976..dbef903 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/TestFSVisitor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestFSVisitor.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.AlwaysFailSetStoragePolicyFileSystem.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestFSVisitor.html" target="_top">Frames</a></li>
@@ -452,7 +452,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.AlwaysFailSetStoragePolicyFileSystem.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestFSVisitor.html" target="_top">Frames</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestFutureUtils.html
similarity index 54%
copy from testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
copy to testdevapidocs/org/apache/hadoop/hbase/util/TestFutureUtils.html
index 1f9b3be..81720e1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestFutureUtils.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TestReplicationStatusSourceStartedTargetStoppedNoOps (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<title>TestFutureUtils (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../script.js"></script>
 </head>
@@ -12,13 +12,13 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TestReplicationStatusSourceStartedTargetStoppedNoOps (Apache HBase 3.0.0-SNAPSHOT Test API)";
+            parent.document.title="TestFutureUtils (Apache HBase 3.0.0-SNAPSHOT Test API)";
         }
     }
     catch(err) {
     }
 //-->
-var methods = {"i0":10};
+var methods = {"i0":10,"i1":10,"i2":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -40,7 +40,7 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TestReplicationStatusSourceStartedTargetStoppedNoOps.html">Use</a></li>
+<li><a href="class-use/TestFutureUtils.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../../index-all.html">Index</a></li>
@@ -49,12 +49,12 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNewOp.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html" target="_top">Frames</a></li>
-<li><a href="TestReplicationStatusSourceStartedTargetStoppedNoOps.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestFutureUtils.html" target="_top">Frames</a></li>
+<li><a href="TestFutureUtils.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -92,20 +92,15 @@ var activeTableTab = "activeTableTab";
 <!-- ========= END OF TOP NAVBAR ========= -->
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.replication</div>
-<h2 title="Class TestReplicationStatusSourceStartedTargetStoppedNoOps" class="title">Class TestReplicationStatusSourceStartedTargetStoppedNoOps</h2>
+<div class="subTitle">org.apache.hadoop.hbase.util</div>
+<h2 title="Class TestFutureUtils" class="title">Class TestFutureUtils</h2>
 </div>
 <div class="contentContainer">
 <ul class="inheritance">
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">org.apache.hadoop.hbase.replication.TestReplicationBase</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.replication.TestReplicationStatusSourceStartedTargetStoppedNoOps</li>
-</ul>
-</li>
+<li>org.apache.hadoop.hbase.util.TestFutureUtils</li>
 </ul>
 </li>
 </ul>
@@ -114,8 +109,8 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#line.37">TestReplicationStatusSourceStartedTargetStoppedNoOps</a>
-extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationBase</a></pre>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.44">TestFutureUtils</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>
 </li>
 </ul>
 </div>
@@ -136,16 +131,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#executor">executor</a></span></code>&nbsp;</td>
 </tr>
 </table>
-<ul class="blockList">
-<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.replication.TestReplicationBase">
-<!--   -->
-</a>
-<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#admin">admin</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#CONF_WITH_LOCALFS">CONF_WITH_LOCALFS</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#conf1">conf1</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#conf2">conf2</a>, <a href="../../../../../org/apache/hadoop/hbase/re [...]
-</ul>
 </li>
 </ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -160,7 +152,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#TestReplicationStatusSourceStartedTargetStoppedNoOps--">TestReplicationStatusSourceStartedTargetStoppedNoOps</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#TestFutureUtils--">TestFutureUtils</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -179,17 +171,18 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#c--">c</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html#testRecordStackTrace--">testRecordStackTrace</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.replication.TestReplicationBase">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#cleanUp--">cleanUp</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#configureClusters--">configureClusters</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#isSerialPeer--">isSerialPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html#isSyncPeer--">isSyncPeer</a>, <a href="../.. [...]
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
@@ -213,10 +206,19 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <a name="CLASS_RULE">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#line.40">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.47">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="executor">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>executor</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.50">executor</a></pre>
 </li>
 </ul>
 </li>
@@ -227,13 +229,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="TestReplicationStatusSourceStartedTargetStoppedNoOps--">
+<a name="TestFutureUtils--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>TestReplicationStatusSourceStartedTargetStoppedNoOps</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#line.37">TestReplicationStatusSourceStartedTargetStoppedNoOps</a>()</pre>
+<h4>TestFutureUtils</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.44">TestFutureUtils</a>()</pre>
 </li>
 </ul>
 </li>
@@ -244,17 +246,35 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="c--">
+<a name="setUp--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUp</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.53">setUp</a>()</pre>
+</li>
+</ul>
+<a name="tearDown--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.58">tearDown</a>()</pre>
+</li>
+</ul>
+<a name="testRecordStackTrace--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>c</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html#line.44">c</a>()
-       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<h4>testRecordStackTrace</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html#line.63">testRecordStackTrace</a>()
+                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+<dd><code><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></code></dd>
 </dl>
 </li>
 </ul>
@@ -277,7 +297,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TestReplicationStatusSourceStartedTargetStoppedNoOps.html">Use</a></li>
+<li><a href="class-use/TestFutureUtils.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../../index-all.html">Index</a></li>
@@ -286,12 +306,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNewOp.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html" target="_top">Frames</a></li>
-<li><a href="TestReplicationStatusSourceStartedTargetStoppedNoOps.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestFutureUtils.html" target="_top">Frames</a></li>
+<li><a href="TestFutureUtils.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html
index fc98f51..5ddad81 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -492,7 +492,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestFutureUtils.html b/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestFutureUtils.html
new file mode 100644
index 0000000..8bcaf26
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestFutureUtils.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.util.TestFutureUtils (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.util.TestFutureUtils (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/util/class-use/TestFutureUtils.html" target="_top">Frames</a></li>
+<li><a href="TestFutureUtils.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.util.TestFutureUtils" class="title">Uses of Class<br>org.apache.hadoop.hbase.util.TestFutureUtils</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.util.TestFutureUtils</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/util/class-use/TestFutureUtils.html" target="_top">Frames</a></li>
+<li><a href="TestFutureUtils.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
index 06c56a9..0ebe884 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
@@ -89,6 +89,7 @@
 <li><a href="TestFSTableDescriptors.FSTableDescriptorsTest.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestFSTableDescriptors.FSTableDescriptorsTest</a></li>
 <li><a href="TestFSUtils.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestFSUtils</a></li>
 <li><a href="TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestFSVisitor</a></li>
+<li><a href="TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestFutureUtils</a></li>
 <li><a href="TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestHBaseFsckCleanReplicationBarriers</a></li>
 <li><a href="TestHBaseFsckComparator.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestHBaseFsckComparator</a></li>
 <li><a href="TestHBaseFsckEncryption.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestHBaseFsckEncryption</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
index 96d8a41..aa2e584 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
@@ -470,181 +470,185 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckCleanReplicationBarriers</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util">TestFutureUtils</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckCleanReplicationBarriers</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckComparator</a></td>
 <td class="colLast">
 <div class="block">Test the comparator used by Hbck.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckEncryption</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckMOB</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html" title="class in org.apache.hadoop.hbase.util">TestHBaseFsckReplication</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html" title="class in org.apache.hadoop.hbase.util">TestHFileArchiveUtil</a></td>
 <td class="colLast">
 <div class="block">Test that the utility works as expected</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdLock.html" title="class in org.apache.hadoop.hbase.util">TestIdLock</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdReadWriteLock.html" title="class in org.apache.hadoop.hbase.util">TestIdReadWriteLock</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TestIncrementingEnvironmentEdge</a></td>
 <td class="colLast">
 <div class="block">Tests that the incrementing environment edge increments time instead of using
  the default.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestJRubyFormat.html" title="class in org.apache.hadoop.hbase.util">TestJRubyFormat</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestJSONMetricUtil.html" title="class in org.apache.hadoop.hbase.util">TestJSONMetricUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestKeyLocker.html" title="class in org.apache.hadoop.hbase.util">TestKeyLocker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestLoadTestKVGenerator.html" title="class in org.apache.hadoop.hbase.util">TestLoadTestKVGenerator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestLossyCounting.html" title="class in org.apache.hadoop.hbase.util">TestLossyCounting</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.html" title="class in org.apache.hadoop.hbase.util">TestMiniClusterLoadEncoded</a></td>
 <td class="colLast">
 <div class="block">Runs a load test on a mini HBase cluster with data block encoding turned on.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.html" title="class in org.apache.hadoop.hbase.util">TestMiniClusterLoadParallel</a></td>
 <td class="colLast">
 <div class="block">A write/read/verify load test on a mini HBase cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.html" title="class in org.apache.hadoop.hbase.util">TestMiniClusterLoadSequential</a></td>
 <td class="colLast">
 <div class="block">A write/read/verify load test on a mini HBase cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestOrder.html" title="class in org.apache.hadoop.hbase.util">TestOrder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestOrderedBytes.html" title="class in org.apache.hadoop.hbase.util">TestOrderedBytes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionMover.html" title="class in org.apache.hadoop.hbase.util">TestRegionMover</a></td>
 <td class="colLast">
 <div class="block">Tests for Region Mover Load/Unload functionality with and without ack mode and also to test
  exclude functionality useful for rack decommissioning</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.html" title="class in org.apache.hadoop.hbase.util">TestRegionSplitCalculator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.SimpleRange.html" title="class in org.apache.hadoop.hbase.util">TestRegionSplitCalculator.SimpleRange</a></td>
 <td class="colLast">
 <div class="block">This is range uses a user specified start and end keys.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util">TestRegionSplitter</a></td>
 <td class="colLast">
 <div class="block">Tests for <code>RegionSplitter</code>, which can create a pre-split table or do a
  rolling split of an existing table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></td>
 <td class="colLast">
 <div class="block">Basic test for some old functionality we don't seem to have used but that looks nice.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util">TestReusablePoolMap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html" title="class in org.apache.hadoop.hbase.util">TestRootPath</a></td>
 <td class="colLast">
 <div class="block">Test requirement that root directory must be a URI</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRoundRobinPoolMap.html" title="class in org.apache.hadoop.hbase.util">TestRoundRobinPoolMap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestShowProperties.html" title="class in org.apache.hadoop.hbase.util">TestShowProperties</a></td>
 <td class="colLast">
 <div class="block">This test is there to dump the properties.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSimpleMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">TestSimpleMutableByteRange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSimplePositionedMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">TestSimplePositionedMutableByteRange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.html" title="class in org.apache.hadoop.hbase.util">TestSortedList</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.StringComparator.html" title="class in org.apache.hadoop.hbase.util">TestSortedList.StringComparator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestStealJobQueue.html" title="class in org.apache.hadoop.hbase.util">TestStealJobQueue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html" title="class in org.apache.hadoop.hbase.util">TestThreadLocalPoolMap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreads.html" title="class in org.apache.hadoop.hbase.util">TestThreads</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestVersionInfo.html" title="class in org.apache.hadoop.hbase.util">TestVersionInfo</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestWeakObjectPool.html" title="class in org.apache.hadoop.hbase.util">TestWeakObjectPool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TimeOffsetEnvironmentEdge</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 4993d15..8548db6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -248,6 +248,7 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestFSTableDescriptors.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFSTableDescriptors</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFSUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFSVisitor</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFutureUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestHBaseFsckCleanReplicationBarriers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestHBaseFsckComparator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestHBaseFsckEncryption</span></a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 8539cfa..f4cae08 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -148,8 +148,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 </ul>
 </li>
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index baae4d5..9cfa789 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3015,6 +3015,7 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSVisitor.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFSVisitor</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestFSWALEntry</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestFullLogReconstruction.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestFullLogReconstruction</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFutureUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestFutureUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestFuzzyRowAndColumnRangeFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFuzzyRowFilter.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestFuzzyRowFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestFuzzyRowFilterEndToEnd</span></a></li>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusAfterLagging.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusAfterLagging.html
index fafbc9c..f47cf60 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusAfterLagging.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusAfterLagging.html
@@ -53,7 +53,7 @@
 <span class="sourceLineNo">045</span>  @Test<a name="line.45"></a>
 <span class="sourceLineNo">046</span>  public void testReplicationStatusAfterLagging() throws Exception {<a name="line.46"></a>
 <span class="sourceLineNo">047</span>    utility2.shutdownMiniHBaseCluster();<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    restartHBaseCluster(utility1, NUM_SLAVES1);<a name="line.48"></a>
+<span class="sourceLineNo">048</span>    restartHBaseCluster(utility1, 1);<a name="line.48"></a>
 <span class="sourceLineNo">049</span>    // add some values to cluster 1<a name="line.49"></a>
 <span class="sourceLineNo">050</span>    for (int i = 0; i &lt; NB_ROWS_IN_BATCH; i++) {<a name="line.50"></a>
 <span class="sourceLineNo">051</span>      Put p = new Put(Bytes.toBytes("row" + i));<a name="line.51"></a>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusBothNormalAndRecoveryLagging.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusBothNormalAndRecoveryLagging.html
index 6830b44..e71fbec 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusBothNormalAndRecoveryLagging.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusBothNormalAndRecoveryLagging.html
@@ -60,7 +60,7 @@
 <span class="sourceLineNo">052</span>      htable1.put(p);<a name="line.52"></a>
 <span class="sourceLineNo">053</span>    }<a name="line.53"></a>
 <span class="sourceLineNo">054</span>    Thread.sleep(10000);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    restartHBaseCluster(utility1, NUM_SLAVES1);<a name="line.55"></a>
+<span class="sourceLineNo">055</span>    restartHBaseCluster(utility1, 1);<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    Admin hbaseAdmin = utility1.getAdmin();<a name="line.56"></a>
 <span class="sourceLineNo">057</span>    ServerName serverName = utility1.getHBaseCluster().getRegionServer(0).getServerName();<a name="line.57"></a>
 <span class="sourceLineNo">058</span>    Thread.sleep(10000);<a name="line.58"></a>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNewOp.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNewOp.html
index 92cac82..984ccb4 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNewOp.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNewOp.html
@@ -54,7 +54,7 @@
 <span class="sourceLineNo">046</span>  @Test<a name="line.46"></a>
 <span class="sourceLineNo">047</span>  public void testReplicationStatusSourceStartedTargetStoppedNewOp() throws Exception {<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    utility2.shutdownMiniHBaseCluster();<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    restartHBaseCluster(utility1, NUM_SLAVES1);<a name="line.49"></a>
+<span class="sourceLineNo">049</span>    restartHBaseCluster(utility1, 1);<a name="line.49"></a>
 <span class="sourceLineNo">050</span>    Admin hbaseAdmin = utility1.getAdmin();<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    // add some values to source cluster<a name="line.51"></a>
 <span class="sourceLineNo">052</span>    for (int i = 0; i &lt; NB_ROWS_IN_BATCH; i++) {<a name="line.52"></a>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
index 34e67b1..3e3d244 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedNoOps.html
@@ -49,9 +49,9 @@
 <span class="sourceLineNo">041</span>    HBaseClassTestRule.forClass(TestReplicationStatusSourceStartedTargetStoppedNoOps.class);<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
 <span class="sourceLineNo">043</span>  @Test<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  public void c() throws Exception {<a name="line.44"></a>
+<span class="sourceLineNo">044</span>  public void testReplicationStatusSourceStartedTargetStoppedNoOps() throws Exception {<a name="line.44"></a>
 <span class="sourceLineNo">045</span>    utility2.shutdownMiniHBaseCluster();<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    restartHBaseCluster(utility1, NUM_SLAVES1);<a name="line.46"></a>
+<span class="sourceLineNo">046</span>    restartHBaseCluster(utility1, 1);<a name="line.46"></a>
 <span class="sourceLineNo">047</span>    Admin hbaseAdmin = utility1.getAdmin();<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    ServerName serverName = utility1.getHBaseCluster().getRegionServer(0).getServerName();<a name="line.48"></a>
 <span class="sourceLineNo">049</span>    Thread.sleep(10000);<a name="line.49"></a>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html
index 35cd9f3..fa82c65 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestReplicationStatusSourceStartedTargetStoppedWithRecovery.html
@@ -62,7 +62,7 @@
 <span class="sourceLineNo">054</span>      htable1.put(p);<a name="line.54"></a>
 <span class="sourceLineNo">055</span>    }<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    Thread.sleep(10000);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    restartHBaseCluster(utility1, NUM_SLAVES1);<a name="line.57"></a>
+<span class="sourceLineNo">057</span>    restartHBaseCluster(utility1, 1);<a name="line.57"></a>
 <span class="sourceLineNo">058</span>    Admin hbaseAdmin = utility1.getAdmin();<a name="line.58"></a>
 <span class="sourceLineNo">059</span>    ServerName serverName = utility1.getHBaseCluster().getRegionServer(0).getServerName();<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    Thread.sleep(10000);<a name="line.60"></a>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html
new file mode 100644
index 0000000..1daddea
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestFutureUtils.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.util;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.hamcrest.CoreMatchers.startsWith;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertThat;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.CompletableFuture;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.ExecutorService;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.Executors;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.stream.Stream;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.junit.After;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.junit.Before;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.ClassRule;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.Test;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.experimental.categories.Category;<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>@Category({ MiscTests.class, SmallTests.class })<a name="line.43"></a>
+<span class="sourceLineNo">044</span>public class TestFutureUtils {<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  @ClassRule<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    HBaseClassTestRule.forClass(TestFutureUtils.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private ExecutorService executor;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  @Before<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public void setUp() {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    executor = Executors.newFixedThreadPool(1, new ThreadFactoryBuilder().setDaemon(true).build());<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  @After<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public void tearDown() {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    executor.shutdownNow();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Test<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public void testRecordStackTrace() throws IOException {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    CompletableFuture&lt;Void&gt; future = new CompletableFuture&lt;&gt;();<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    executor.execute(() -&gt; future.completeExceptionally(new HBaseIOException("Inject error!")));<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    try {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      FutureUtils.get(future);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      fail("The future should have been completed exceptionally");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    } catch (HBaseIOException e) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      assertEquals("Inject error!", e.getMessage());<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      StackTraceElement[] elements = e.getStackTrace();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      assertThat(elements[0].toString(), startsWith("java.lang.Thread.getStackTrace"));<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      assertThat(elements[1].toString(),<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        startsWith("org.apache.hadoop.hbase.util.FutureUtils.setStackTrace"));<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      assertThat(elements[2].toString(),<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        startsWith("org.apache.hadoop.hbase.util.FutureUtils.rethrow"));<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      assertThat(elements[3].toString(),<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        startsWith("org.apache.hadoop.hbase.util.FutureUtils.get"));<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      assertThat(elements[4].toString(),<a name="line.79"></a>
+<span class="sourceLineNo">080</span>        startsWith("org.apache.hadoop.hbase.util.TestFutureUtils.testRecordStackTrace"));<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      assertTrue(Stream.of(elements)<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        .anyMatch(element -&gt; element.toString().contains("--------Future.get--------")));<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span>}<a name="line.85"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>