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/09/20 14:42:20 UTC

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

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 fe105a5  Published site at e890776fe04697a32a71ac6a4a5dada9bc549d80.
fe105a5 is described below

commit fe105a59f2c72bc6825258f999e53ca68acb03ba
Author: jenkins <bu...@apache.org>
AuthorDate: Fri Sep 20 14:42:03 2019 +0000

    Published site at e890776fe04697a32a71ac6a4a5dada9bc549d80.
---
 acid-semantics.html                                |    2 +-
 apache_hbase_reference_guide.pdf                   |    4 +-
 book.html                                          |    2 +-
 bulk-loads.html                                    |    2 +-
 checkstyle-aggregate.html                          |   16 +-
 checkstyle.rss                                     |   44 +-
 coc.html                                           |    2 +-
 dependencies.html                                  |    2 +-
 dependency-convergence.html                        |    2 +-
 dependency-info.html                               |    2 +-
 dependency-management.html                         |    2 +-
 devapidocs/allclasses-frame.html                   |    1 +
 devapidocs/allclasses-noframe.html                 |    1 +
 devapidocs/constant-values.html                    |    4 +-
 devapidocs/deprecated-list.html                    |  215 ++--
 devapidocs/index-all.html                          |   73 +-
 .../apache/hadoop/hbase/backup/package-tree.html   |    4 +-
 .../hbase/client/class-use/AsyncConnection.html    |   12 +-
 .../hadoop/hbase/client/class-use/Connection.html  |   39 +-
 .../apache/hadoop/hbase/client/package-tree.html   |   16 +-
 .../hadoop/hbase/coprocessor/package-tree.html     |    2 +-
 .../apache/hadoop/hbase/executor/package-tree.html |    2 +-
 .../apache/hadoop/hbase/filter/package-tree.html   |    6 +-
 .../org/apache/hadoop/hbase/http/package-tree.html |    2 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |    4 +-
 .../org/apache/hadoop/hbase/ipc/package-tree.html  |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html       |    4 +-
 .../hbase/master/assignment/package-tree.html      |    2 +-
 .../hadoop/hbase/master/balancer/package-tree.html |    2 +-
 .../apache/hadoop/hbase/master/package-tree.html   |    6 +-
 .../hbase/master/procedure/package-tree.html       |    4 +-
 .../hadoop/hbase/monitoring/package-tree.html      |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |   14 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    6 +-
 .../apache/hadoop/hbase/quotas/package-tree.html   |    4 +-
 .../hadoop/hbase/regionserver/HStoreFile.html      |  223 ++--
 .../hadoop/hbase/regionserver/StoreFile.html       |   69 +-
 .../hadoop/hbase/regionserver/package-tree.html    |   16 +-
 .../hbase/regionserver/wal/package-tree.html       |    4 +-
 .../hadoop/hbase/replication/package-tree.html     |    2 +-
 .../hadoop/hbase/rest/model/package-tree.html      |    2 +-
 .../hadoop/hbase/security/access/package-tree.html |    6 +-
 .../hadoop/hbase/security/class-use/User.html      |   23 +-
 .../apache/hadoop/hbase/security/package-tree.html |    2 +-
 .../token/AuthenticationTokenSelector.html         |    4 +-
 .../hbase/security/token/ClientTokenUtil.html      |  486 ++++++++
 .../hbase/security/token/FsDelegationToken.html    |    4 +-
 .../hadoop/hbase/security/token/TokenUtil.html     |  231 ++--
 .../class-use/AuthenticationTokenIdentifier.html   |   61 +-
 .../security/token/class-use/ClientTokenUtil.html  |   20 +-
 .../hadoop/hbase/security/token/package-frame.html |    1 +
 .../hbase/security/token/package-summary.html      |   12 +-
 .../hadoop/hbase/security/token/package-tree.html  |    1 +
 .../apache/hadoop/hbase/thrift/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/util/package-tree.html |    8 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |    2 +-
 devapidocs/overview-tree.html                      |    1 +
 .../src-html/org/apache/hadoop/hbase/Version.html  |    4 +-
 .../hadoop/hbase/regionserver/HStoreFile.html      | 1156 ++++++++++----------
 ...cureBulkLoadManager.SecureBulkLoadListener.html |    6 +-
 .../hbase/regionserver/SecureBulkLoadManager.html  |    6 +-
 .../hadoop/hbase/regionserver/StoreFile.html       |   79 +-
 .../hbase/security/token/ClientTokenUtil.html      |  273 +++++
 .../hadoop/hbase/security/token/TokenProvider.html |    2 +-
 .../hadoop/hbase/security/token/TokenUtil.html     |  586 +++++-----
 downloads.html                                     |    2 +-
 export_control.html                                |    2 +-
 index.html                                         |    2 +-
 issue-tracking.html                                |    2 +-
 mail-lists.html                                    |    2 +-
 metrics.html                                       |    2 +-
 old_news.html                                      |    2 +-
 plugin-management.html                             |    2 +-
 plugins.html                                       |    2 +-
 poweredbyhbase.html                                |    2 +-
 project-info.html                                  |    2 +-
 project-reports.html                               |    2 +-
 project-summary.html                               |    2 +-
 pseudo-distributed.html                            |    2 +-
 replication.html                                   |    2 +-
 resources.html                                     |    2 +-
 source-repository.html                             |    2 +-
 sponsors.html                                      |    2 +-
 supportingprojects.html                            |    2 +-
 team-list.html                                     |    2 +-
 testdevapidocs/allclasses-frame.html               |    2 +-
 testdevapidocs/allclasses-noframe.html             |    2 +-
 testdevapidocs/index-all.html                      |   24 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |   16 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |    2 +-
 .../MockMasterServices.MockRegionStateStore.html   |    6 +-
 .../master/assignment/MockMasterServices.html      |   68 +-
 ...estZKProcedureControllers.StartControllers.html |    6 +-
 .../procedure/TestZKProcedureControllers.html      |   10 +-
 .../hadoop/hbase/procedure/package-tree.html       |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    4 +-
 .../hadoop/hbase/regionserver/MockHStoreFile.html  |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html    |    6 +-
 .../security/token/TestAuthenticationKey.html      |    4 +-
 ...TestTokenUtil.html => TestClientTokenUtil.html} |   58 +-
 .../token/TestDelegationTokenWithEncryption.html   |    4 +-
 .../token/TestTokenAuthentication.TokenServer.html |    4 +-
 .../hbase/security/token/TestZKSecretWatcher.html  |    4 +-
 ...TestTokenUtil.html => TestClientTokenUtil.html} |   20 +-
 .../hadoop/hbase/security/token/package-frame.html |    2 +-
 .../hbase/security/token/package-summary.html      |   18 +-
 .../hadoop/hbase/security/token/package-tree.html  |    2 +-
 testdevapidocs/overview-tree.html                  |    2 +-
 .../org/apache/hadoop/hbase/TestSplitMerge.html    |   88 +-
 .../MockMasterServices.MockRegionStateStore.html   |  592 +++++-----
 .../master/assignment/MockMasterServices.html      |  592 +++++-----
 ...estZKProcedureControllers.StartControllers.html |  239 ++--
 .../procedure/TestZKProcedureControllers.html      |  239 ++--
 .../hbase/security/token/TestClientTokenUtil.html  |  174 +++
 .../token/TestDelegationTokenWithEncryption.html   |    2 +-
 .../token/TestGenerateDelegationToken.html         |    2 +-
 .../hadoop/hbase/security/token/TestTokenUtil.html |  176 ---
 117 files changed, 3569 insertions(+), 2648 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index d314dcb..04e7e51 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -450,7 +450,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 1a51eb6..e3f2ee5 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:20190919144450+00'00')
-/CreationDate (D:20190919144450+00'00')
+/ModDate (D:20190920143907+00'00')
+/CreationDate (D:20190920143907+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index d703305..a7d72f4 100644
--- a/book.html
+++ b/book.html
@@ -43161,7 +43161,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-09-19 14:34:15 UTC
+Last updated 2019-09-20 14:30:13 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 7e5dbc9..2517251 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -155,7 +155,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 73e432a..8a5db15 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -149,7 +149,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>4020</td>
+<td>4021</td>
 <td>0</td>
 <td>0</td>
 <td>11702</td></tr></table></div>
@@ -60599,31 +60599,31 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>216</td></tr>
+<td>219</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>236</td></tr>
+<td>239</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>306</td></tr>
+<td>318</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>538</td></tr>
+<td>550</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>549</td></tr></table></div>
+<td>561</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.HeapMemoryManager.java">org/apache/hadoop/hbase/regionserver/HeapMemoryManager.java</h3>
 <table border="0" class="table table-striped">
@@ -78428,7 +78428,7 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>55</td></tr></table></div>
+<td>43</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.token.ZKSecretWatcher.java">org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java</h3>
 <table border="0" class="table table-striped">
@@ -92789,7 +92789,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 22332c6..666fcb3 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: 4020,
+      <title>File: 4021,
              Errors: 11702,
              Warnings: 0,
              Infos: 0
@@ -2146,6 +2146,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.token.ClientTokenUtil.java">org/apache/hadoop/hbase/security/token/ClientTokenUtil.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.regionserver.TestRecoveredEdits.java">org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.java</a>
                 </td>
                 <td>
@@ -30706,20 +30720,6 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.token.TestTokenUtil.java">org/apache/hadoop/hbase/security/token/TestTokenUtil.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.quotas.TestRateLimiter.java">org/apache/hadoop/hbase/quotas/TestRateLimiter.java</a>
                 </td>
                 <td>
@@ -35256,6 +35256,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.token.TestClientTokenUtil.java">org/apache/hadoop/hbase/security/token/TestClientTokenUtil.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.regionserver.TestRegionFavoredNodes.java">org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.java</a>
                 </td>
                 <td>
diff --git a/coc.html b/coc.html
index fa7317f..ba33a90 100644
--- a/coc.html
+++ b/coc.html
@@ -224,7 +224,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 341543c..fb02392 100644
--- a/dependencies.html
+++ b/dependencies.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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 815294b..d4f068d 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -541,7 +541,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 ff0f606..64f8fc3 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -177,7 +177,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 8a6c246..6d8a38a 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -899,7 +899,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 4ed4ebf..5b5e95a 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -510,6 +510,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ClientIdGenerator.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ClientIdGenerator</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ClientSideRegionScanner.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ClientSideRegionScanner</a></li>
 <li><a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot" target="classFrame">ClientSnapshotDescriptionUtils</a></li>
+<li><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">ClientTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ClientUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/util/ClientUtils.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">ClientUtils</a></li>
 <li><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">ClientZKSyncer</a></li>
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 2c47912..242d842 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -510,6 +510,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ClientIdGenerator.html" title="class in org.apache.hadoop.hbase.client">ClientIdGenerator</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ClientSideRegionScanner.html" title="class in org.apache.hadoop.hbase.client">ClientSideRegionScanner</a></li>
 <li><a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot">ClientSnapshotDescriptionUtils</a></li>
+<li><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client">ClientUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/util/ClientUtils.html" title="class in org.apache.hadoop.hbase.util">ClientUtils</a></li>
 <li><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></li>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 3c4c8e2..120ad70 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3999,14 +3999,14 @@
 <!--   -->
 </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>"Thu Sep 19 14:40:56 UTC 2019"</code></td>
+<td class="colLast"><code>"Fri Sep 20 14:35:24 UTC 2019"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </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#revision">revision</a></code></td>
-<td class="colLast"><code>"a85c6b48672552136ead76a682458c884a558dc2"</code></td>
+<td class="colLast"><code>"e890776fe04697a32a71ac6a4a5dada9bc549d80"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
diff --git a/devapidocs/deprecated-list.html b/devapidocs/deprecated-list.html
index df6d98b..1279db6 100644
--- a/devapidocs/deprecated-list.html
+++ b/devapidocs/deprecated-list.html
@@ -1588,390 +1588,411 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">org.apache.hadoop.hbase.security.token.TokenUtil.obtainToken(AsyncConnection)</a>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">org.apache.hadoop.hbase.security.token.TokenUtil.obtainToken(Connection)</a>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.security.token.TokenUtil.obtainToken(Connection, User)</a>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html#opertationTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutatorParams.opertationTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 2.3.0, will be removed in 4.0.0. Use <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html#operationTimeout-int-"><code>BufferedMutatorParams.operationTimeout(int)</code></a></span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/KeyValue.html#oswrite-org.apache.hadoop.hbase.KeyValue-java.io.OutputStream-boolean-">org.apache.hadoop.hbase.KeyValue.oswrite(KeyValue, OutputStream, boolean)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Instead use <a href="org/apache/hadoop/hbase/KeyValue.html#write-java.io.OutputStream-boolean-"><code>KeyValue.write(OutputStream, boolean)</code></a></span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#overlappingKeys-byte:A-byte:A-byte:A-byte:A-">org.apache.hadoop.hbase.CellUtil.overlappingKeys(byte[], byte[], byte[], byte[])</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseDelimitedFrom-byte:A-int-int-">org.apache.hadoop.hbase.HRegionInfo.parseDelimitedFrom(byte[], int, int)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseDelimitedFrom-byte:A-int-int-"><code>RegionInfo.parseDelimitedFrom(byte[], int, int)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseFrom-byte:A-">org.apache.hadoop.hbase.HRegionInfo.parseFrom(byte[])</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseFrom-byte:A-"><code>RegionInfo.parseFrom(byte[])</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseFrom-byte:A-int-int-">org.apache.hadoop.hbase.HRegionInfo.parseFrom(byte[], int, int)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseFrom-byte:A-int-int-"><code>RegionInfo.parseFrom(byte[], int, int)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseFrom-java.io.DataInputStream-">org.apache.hadoop.hbase.HRegionInfo.parseFrom(DataInputStream)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseFrom-java.io.DataInputStream-"><code>RegionInfo.parseFrom(DataInputStream)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseFromOrNull-byte:A-">org.apache.hadoop.hbase.HRegionInfo.parseFromOrNull(byte[])</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseFromOrNull-byte:A-"><code>RegionInfo.parseFromOrNull(byte[])</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseFromOrNull-byte:A-int-int-">org.apache.hadoop.hbase.HRegionInfo.parseFromOrNull(byte[], int, int)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseFromOrNull-byte:A-int-int-"><code>RegionInfo.parseFromOrNull(byte[], int, int)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/ServerName.html#parseHostname-java.lang.String-">org.apache.hadoop.hbase.ServerName.parseHostname(String)</a>
 <div class="block"><span class="deprecationComment">Since 2.0. Use <a href="org/apache/hadoop/hbase/ServerName.html#valueOf-java.lang.String-"><code>ServerName.valueOf(String)</code></a></span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/ServerName.html#parsePort-java.lang.String-">org.apache.hadoop.hbase.ServerName.parsePort(String)</a>
 <div class="block"><span class="deprecationComment">Since 2.0. Use <a href="org/apache/hadoop/hbase/ServerName.html#valueOf-java.lang.String-"><code>ServerName.valueOf(String)</code></a></span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#parseRegionName-byte:A-">org.apache.hadoop.hbase.HRegionInfo.parseRegionName(byte[])</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#parseRegionName-byte:A-"><code>RegionInfo.parseRegionName(byte[])</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/ServerName.html#parseStartcode-java.lang.String-">org.apache.hadoop.hbase.ServerName.parseStartcode(String)</a>
 <div class="block"><span class="deprecationComment">Since 2.0. Use <a href="org/apache/hadoop/hbase/ServerName.html#valueOf-java.lang.String-"><code>ServerName.valueOf(String)</code></a></span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postCompletedModifyTableAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">org.apache.hadoop.hbase.coprocessor.MasterObserver.postCompletedModifyTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, TableName, TableDescriptor)</a>
 <div class="block"><span class="deprecationComment">Since 2.1. Will be removed in 3.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#postInstantiateDeleteTracker-org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker-">org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postInstantiateDeleteTracker(DeleteTracker)</a>
 <div class="block"><span class="deprecationComment">Since 2.0 with out any replacement and will be removed in 3.0</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postInstantiateDeleteTracker-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker-">org.apache.hadoop.hbase.coprocessor.RegionObserver.postInstantiateDeleteTracker(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, DeleteTracker)</a>
 <div class="block"><span class="deprecationComment">Since 2.0 with out any replacement and will be removed in 3.0</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postModifyNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.NamespaceDescriptor-">org.apache.hadoop.hbase.coprocessor.MasterObserver.postModifyNamespace(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, NamespaceDescriptor)</a>
 <div class="block"><span class="deprecationComment">Since 2.1. Will be removed in 3.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postModifyTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">org.apache.hadoop.hbase.coprocessor.MasterObserver.postModifyTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, TableName, TableDescriptor)</a>
 <div class="block"><span class="deprecationComment">Since 2.1. Will be removed in 3.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postMutationBeforeWAL-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType-org.apache.hadoop.hbase.client.Mutation-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">org.apache.hadoop.hbase.coprocessor.RegionObserver.postMutationBeforeWAL(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, RegionObserver.MutationType, Mutation, Cell, [...]
 <div class="block"><span class="deprecationComment">since 2.2.0 and will be removedin 4.0.0. Use
    <a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postIncrementBeforeWAL-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Mutation-java.util.List-"><code>RegionObserver.postIncrementBeforeWAL(ObserverContext, Mutation, List)</code></a> or
    <a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postAppendBeforeWAL-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Mutation-java.util.List-"><code>RegionObserver.postAppendBeforeWAL(ObserverContext, Mutation, List)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-">org.apache.hadoop.hbase.coprocessor.RegionServerObserver.postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0 with out any replacement. This is maintained for internal
  usage by AccessController. Do not use these hooks in custom co-processors.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postStoreFileReaderOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.io.FSDataInputStreamWrapper-long-org.apache.hadoop.hbase.io.hfile.CacheConfig-org.apache.hadoop.hbase.io.Reference-org.apache.hadoop.hbase.regionserver.StoreFileReader-">org.apache.hadoop.hbase.coprocessor.RegionObserver.postStoreFileReaderOpen(Obser [...]
 <div class="block"><span class="deprecationComment">For Phoenix only, StoreFileReader is not a stable interface.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#postWALRestore-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postWALRestore(RegionInfo, WALKey, WALEdit)</a>
 <div class="block"><span class="deprecationComment">Since hbase-2.0.0. No replacement. To be removed in hbase-3.0.0 and replaced
  with something that doesn't expose IntefaceAudience.Private classes.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/WALObserver.html#postWALWrite-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">org.apache.hadoop.hbase.coprocessor.WALObserver.postWALWrite(ObserverContext&lt;? extends WALCoprocessorEnvironment&gt;, RegionInfo, WALKey, WALEdit)</a>
 <div class="block"><span class="deprecationComment">Since hbase-2.0.0. To be replaced with an alternative that does not expose
  InterfaceAudience classes such as WALKey and WALEdit. Will be removed in hbase-3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preModifyNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.NamespaceDescriptor-">org.apache.hadoop.hbase.coprocessor.MasterObserver.preModifyNamespace(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, NamespaceDescriptor)</a>
 <div class="block"><span class="deprecationComment">Since 2.1. Will be removed in 3.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preModifyTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">org.apache.hadoop.hbase.coprocessor.MasterObserver.preModifyTable(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, TableName, TableDescriptor)</a>
 <div class="block"><span class="deprecationComment">Since 2.1. Will be removed in 3.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preModifyTableAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">org.apache.hadoop.hbase.coprocessor.MasterObserver.preModifyTableAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, TableName, TableDescriptor)</a>
 <div class="block"><span class="deprecationComment">Since 2.1. Will be removed in 3.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#prePrepareTimeStampForDeleteVersion-org.apache.hadoop.hbase.client.Mutation-org.apache.hadoop.hbase.Cell-byte:A-org.apache.hadoop.hbase.client.Get-">org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.prePrepareTimeStampForDeleteVersion(Mutation, Cell, byte[], Get)</a>
 <div class="block"><span class="deprecationComment">In hbase-2.0.0. Will be removed in hbase-3.0.0. Added explicitly for a single
  Coprocessor for its needs only. Will be removed.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#prePrepareTimeStampForDeleteVersion-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Mutation-org.apache.hadoop.hbase.Cell-byte:A-org.apache.hadoop.hbase.client.Get-">org.apache.hadoop.hbase.coprocessor.RegionObserver.prePrepareTimeStampForDeleteVersion(ObserverContext&lt;RegionCoprocessorEnvironment&gt;, Mutation, Cell, byte[], Get)</a>
 <div class="block"><span class="deprecationComment">Since hbase-2.0.0. No replacement. To be removed in hbase-3.0.0 and replaced
  with something that doesn't expose IntefaceAudience.Private classes.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-">org.apache.hadoop.hbase.coprocessor.RegionServerObserver.preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0 with out any replacement. This is maintained for internal
  usage by AccessController. Do not use these hooks in custom co-processors.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preStoreFileReaderOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.io.FSDataInputStreamWrapper-long-org.apache.hadoop.hbase.io.hfile.CacheConfig-org.apache.hadoop.hbase.io.Reference-org.apache.hadoop.hbase.regionserver.StoreFileReader-">org.apache.hadoop.hbase.coprocessor.RegionObserver.preStoreFileReaderOpen(Observe [...]
 <div class="block"><span class="deprecationComment">For Phoenix only, StoreFileReader is not a stable interface.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#prettyPrint-java.lang.String-">org.apache.hadoop.hbase.HRegionInfo.prettyPrint(String)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#prettyPrint-java.lang.String-"><code>RegionInfo.prettyPrint(String)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#preWALRestore-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preWALRestore(RegionInfo, WALKey, WALEdit)</a>
 <div class="block"><span class="deprecationComment">Since hbase-2.0.0. No replacement. To be removed in hbase-3.0.0 and replaced
  with something that doesn't expose IntefaceAudience.Private classes.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/WALObserver.html#preWALWrite-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">org.apache.hadoop.hbase.coprocessor.WALObserver.preWALWrite(ObserverContext&lt;? extends WALCoprocessorEnvironment&gt;, RegionInfo, WALKey, WALEdit)</a>
 <div class="block"><span class="deprecationComment">Since hbase-2.0.0. To be replaced with an alternative that does not expose
  InterfaceAudience classes such as WALKey and WALEdit. Will be removed in hbase-3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/Region.html#processRowsWithLocks-org.apache.hadoop.hbase.regionserver.RowProcessor-">org.apache.hadoop.hbase.regionserver.Region.processRowsWithLocks(RowProcessor&lt;?, ?&gt;)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0. For customization, use
  Coprocessors instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/Region.html#processRowsWithLocks-org.apache.hadoop.hbase.regionserver.RowProcessor-long-long-">org.apache.hadoop.hbase.regionserver.Region.processRowsWithLocks(RowProcessor&lt;?, ?&gt;, long, long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0. For customization, use
  Coprocessors instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/Region.html#processRowsWithLocks-org.apache.hadoop.hbase.regionserver.RowProcessor-long-long-long-">org.apache.hadoop.hbase.regionserver.Region.processRowsWithLocks(RowProcessor&lt;?, ?&gt;, long, long, long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0. For customization, use
  Coprocessors instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/util/ZKDataMigrator.html#queryForTableStates-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">org.apache.hadoop.hbase.util.ZKDataMigrator.queryForTableStates(ZKWatcher)</a>
 <div class="block"><span class="deprecationComment">Since 2.0.0. To be removed in hbase-3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/wal/Compressor.html#readCompressed-java.io.DataInput-org.apache.hadoop.hbase.io.util.Dictionary-">org.apache.hadoop.hbase.regionserver.wal.Compressor.readCompressed(DataInput, Dictionary)</a></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/io/Reference.html#readFields-java.io.DataInput-">org.apache.hadoop.hbase.io.Reference.readFields(DataInput)</a>
 <div class="block"><span class="deprecationComment">Writables are going away. Use the pb serialization methods instead.
  Remove in a release after 0.96 goes out.  This is here only to migrate
  old Reference files written with Writables before 0.96.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/security/access/AccessControlUtil.html#revoke-com.google.protobuf.RpcController-org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface-java.lang.String-org.apache.hadoop.hbase.security.access.Permission.Action...-">org.apache.hadoop.hbase.security.access.AccessControlUtil.revoke(RpcController, AccessControlProtos.AccessControlService.BlockingInterface, String, Permission.Action...)</a>
 <div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/hbase/client/Admin.html#revoke-org.apache.hadoop.hbase.security.access.UserPermission-"><code>Admin.revoke(UserPermission)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/security/access/AccessControlUtil.html#revoke-com.google.protobuf.RpcController-org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface-java.lang.String-java.lang.String-org.apache.hadoop.hbase.security.access.Permission.Action...-">org.apache.hadoop.hbase.security.access.AccessControlUtil.revoke(RpcController, AccessControlProtos.AccessControlService.BlockingInterface, String, String, Permi [...]
 <div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/hbase/client/Admin.html#revoke-org.apache.hadoop.hbase.security.access.UserPermission-"><code>Admin.revoke(UserPermission)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/security/access/AccessControlUtil.html#revoke-com.google.protobuf.RpcController-org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface-java.lang.String-org.apache.hadoop.hbase.TableName-byte:A-byte:A-org.apache.hadoop.hbase.security.access.Permission.Action...-">org.apache.hadoop.hbase.security.access.AccessControlUtil.revoke(RpcController, AccessControlProtos.AccessControlService.BlockingI [...]
 <div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/hbase/client/Admin.html#revoke-org.apache.hadoop.hbase.security.access.UserPermission-"><code>Admin.revoke(UserPermission)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#revoke-com.google.protobuf.RpcController-org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.RevokeRequest-com.google.protobuf.RpcCallback-">org.apache.hadoop.hbase.security.access.AccessController.revoke(RpcController, AccessControlProtos.RevokeRequest, RpcCallback&lt;AccessControlProtos.RevokeResponse&gt;)</a>
 <div class="block"><span class="deprecationComment">since 2.2.0 and will be removed in 4.0.0. Use <a href="org/apache/hadoop/hbase/client/Admin.html#revoke-org.apache.hadoop.hbase.security.access.UserPermission-"><code>Admin.revoke(UserPermission)</code></a>
    instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Hbck.html#scheduleServerCrashProcedure-java.util.List-">org.apache.hadoop.hbase.client.Hbck.scheduleServerCrashProcedure(List&lt;HBaseProtos.ServerName&gt;)</a>
 <div class="block"><span class="deprecationComment">since 2.2.1. Will removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setAsyncPrefetch-boolean-">org.apache.hadoop.hbase.client.Scan.setAsyncPrefetch(boolean)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. After building sync client upon async
              client, the implementation is always 'async prefetch', so this flag is useless now.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setBandwidth-long-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setBandwidth(long)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setBandwidth-long-"><code>ReplicationPeerConfigBuilder.setBandwidth(long)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setBindAddress-java.lang.String-">org.apache.hadoop.hbase.http.HttpServer.Builder.setBindAddress(String)</a>
 <div class="block"><span class="deprecationComment">Since 0.99.0. Use <a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#addEndpoint-java.net.URI-"><code>HttpServer.Builder.addEndpoint(URI)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HColumnDescriptor.html#setCacheDataInL1-boolean-">org.apache.hadoop.hbase.HColumnDescriptor.setCacheDataInL1(boolean)</a>
 <div class="block"><span class="deprecationComment">Since 2.0 and will be removed in 3.0 with out any replacement. Caching data in on
              heap Cache, when there are both on heap LRU Cache and Bucket Cache will no longer
              be supported from 2.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setClusterKey-java.lang.String-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setClusterKey(String)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setClusterKey-java.lang.String-"><code>ReplicationPeerConfigBuilder.setClusterKey(String)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#setCoprocessorWithSpec-java.lang.String-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.ModifyableTableDescriptor.setCoprocessorWithSpec(String)</a>
 <div class="block"><span class="deprecationComment">used by HTableDescriptor and admin.rb.
                        As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setExcludeNamespaces-java.util.Set-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setExcludeNamespaces(Set&lt;String&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setExcludeNamespaces-java.util.Set-"><code>ReplicationPeerConfigBuilder.setExcludeNamespaces(Set)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setExcludeTableCFsMap-java.util.Map-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setExcludeTableCFsMap(Map&lt;TableName, ? extends Collection&lt;String&gt;&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setExcludeTableCFsMap-java.util.Map-"><code>ReplicationPeerConfigBuilder.setExcludeTableCFsMap(Map)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">org.apache.hadoop.hbase.client.Scan.setMaxVersions()</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
    family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>Scan.readAllVersions()</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">org.apache.hadoop.hbase.client.Scan.setMaxVersions(int)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
    family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readVersions-int-"><code>Scan.readVersions(int)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setName-java.lang.String-">org.apache.hadoop.hbase.http.HttpServer.Builder.setName(String)</a>
 <div class="block"><span class="deprecationComment">Since 0.99.0. Use <a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setAppDir-java.lang.String-"><code>HttpServer.Builder.setAppDir(String)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setNamespaces-java.util.Set-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setNamespaces(Set&lt;String&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setNamespaces-java.util.Set-"><code>ReplicationPeerConfigBuilder.setNamespaces(Set)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutator.html#setOperationTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutator.setOperationTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. Please set this through the
              <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client"><code>BufferedMutatorParams</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.ModifyableTableDescriptor.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.HTableDescriptor.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 0.94.1</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.ModifyableTableDescriptor.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.HTableDescriptor.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 0.94.1</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setPort-int-">org.apache.hadoop.hbase.http.HttpServer.Builder.setPort(int)</a>
 <div class="block"><span class="deprecationComment">Since 0.99.0. Use <a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#addEndpoint-java.net.URI-"><code>HttpServer.Builder.addEndpoint(URI)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setRegionMemstoreReplication-boolean-">org.apache.hadoop.hbase.HTableDescriptor.setRegionMemstoreReplication(boolean)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="org/apache/hadoop/hbase/HTableDescriptor.html#setRegionMemStoreReplication-boolean-"><code>HTableDescriptor.setRegionMemStoreReplication(boolean)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setReplicateAllUserTables-boolean-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setReplicateAllUserTables(boolean)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setReplicateAllUserTables-boolean-"><code>ReplicationPeerConfigBuilder.setReplicateAllUserTables(boolean)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setReplicationEndpointImpl-java.lang.String-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setReplicationEndpointImpl(String)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setReplicationEndpointImpl-java.lang.String-"><code>ReplicationPeerConfigBuilder.setReplicationEndpointImpl(String)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutator.html#setRpcTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutator.setRpcTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. Please set this through the
              <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client"><code>BufferedMutatorParams</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#setSequenceId-org.apache.hadoop.hbase.Cell-long-">org.apache.hadoop.hbase.CellUtil.setSequenceId(Cell, long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">org.apache.hadoop.hbase.client.Scan.setSmall(boolean)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#setLimit-int-"><code>Scan.setLimit(int)</code></a> and
    <a href="org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-"><code>Scan.setReadType(ReadType)</code></a> instead. And for the one rpc optimization, now we will also
@@ -1979,123 +2000,137 @@
    the scanner automatically which means we will fall back to one rpc.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setStartRow-byte:A-">org.apache.hadoop.hbase.client.Scan.setStartRow(byte[])</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-"><code>Scan.withStartRow(byte[])</code></a>
    instead. This method may change the inclusive of the stop row to keep compatible with the old
    behavior.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">org.apache.hadoop.hbase.client.Scan.setStopRow(byte[])</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-"><code>Scan.withStopRow(byte[])</code></a> instead.
    This method may change the inclusive of the stop row to keep compatible with the old
    behavior.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setTableCFsMap-java.util.Map-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setTableCFsMap(Map&lt;TableName, ? extends Collection&lt;String&gt;&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setTableCFsMap-java.util.Map-"><code>ReplicationPeerConfigBuilder.setTableCFsMap(Map)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">org.apache.hadoop.hbase.client.Scan.setTimeStamp(long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>Scan.setTimestamp(long)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html#setWriteBufferPeriodicFlushTimerTickMs-long-">org.apache.hadoop.hbase.client.BufferedMutatorParams.setWriteBufferPeriodicFlushTimerTickMs(long)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. We use a common timer in the whole client
              implementation so you can not set it any more.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#tagsIterator-byte:A-int-int-">org.apache.hadoop.hbase.CellUtil.tagsIterator(byte[], int, int)</a>
 <div class="block"><span class="deprecationComment">As of 2.0.0 and will be removed in 3.0.0
              Instead use <a href="org/apache/hadoop/hbase/PrivateCellUtil.html#tagsIterator-org.apache.hadoop.hbase.Cell-"><code>PrivateCellUtil.tagsIterator(Cell)</code></a></span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toByteArray--">org.apache.hadoop.hbase.HRegionInfo.toByteArray()</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toByteArray-org.apache.hadoop.hbase.client.RegionInfo-"><code>RegionInfo.toByteArray(RegionInfo)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toDelimitedByteArray--">org.apache.hadoop.hbase.HRegionInfo.toDelimitedByteArray()</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.client.RegionInfo-"><code>RegionInfo.toDelimitedByteArray(RegionInfo)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.HRegionInfo...-">org.apache.hadoop.hbase.HRegionInfo.toDelimitedByteArray(HRegionInfo...)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.client.RegionInfo...-"><code>RegionInfo.toDelimitedByteArray(RegionInfo...)</code></a>.</span></div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">org.apache.hadoop.hbase.security.token.TokenUtil.toToken(AuthenticationProtos.Token)</a>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</td>
+</tr>
 <tr class="rowColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">org.apache.hadoop.hbase.security.token.TokenUtil.toToken(Token&lt;AuthenticationTokenIdentifier&gt;)</a>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeer.html#trackPeerConfigChanges-org.apache.hadoop.hbase.replication.ReplicationPeerConfigListener-">org.apache.hadoop.hbase.replication.ReplicationPeer.trackPeerConfigChanges(ReplicationPeerConfigListener)</a>
 <div class="block"><span class="deprecationComment">since 2.1.0 and will be removed in 4.0.0. Use
    <a href="org/apache/hadoop/hbase/replication/ReplicationPeer.html#registerPeerConfigListener-org.apache.hadoop.hbase.replication.ReplicationPeerConfigListener-"><code>ReplicationPeer.registerPeerConfigListener(ReplicationPeerConfigListener)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/wal/Compressor.html#uncompressIntoArray-byte:A-int-java.io.DataInput-org.apache.hadoop.hbase.io.util.Dictionary-">org.apache.hadoop.hbase.regionserver.wal.Compressor.uncompressIntoArray(byte[], int, DataInput, Dictionary)</a></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.html#updateExistingNodeData-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-byte:A-int-">org.apache.hadoop.hbase.zookeeper.ZKUtil.updateExistingNodeData(ZKWatcher, String, byte[], int)</a>
 <div class="block"><span class="deprecationComment">Unused</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#updateLatestStamp-org.apache.hadoop.hbase.Cell-byte:A-int-">org.apache.hadoop.hbase.CellUtil.updateLatestStamp(Cell, byte[], int)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#updateLatestStamp-org.apache.hadoop.hbase.Cell-long-">org.apache.hadoop.hbase.CellUtil.updateLatestStamp(Cell, long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.waitMetaExclusiveLock(Procedure&lt;?&gt;)</a>
 <div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
              <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.wakeMetaExclusiveLock(Procedure&lt;?&gt;)</a>
 <div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
              <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-byte:A-int-">org.apache.hadoop.hbase.io.TimeRange.withinTimeRange(byte[], int)</a>
 <div class="block"><span class="deprecationComment">This is made @InterfaceAudience.Private in the 2.0 line and above and may be
    changed to private or removed in 3.0. Use <a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-long-"><code>TimeRange.withinTimeRange(long)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/wal/Compressor.html#writeCompressed-byte:A-int-int-java.io.DataOutput-org.apache.hadoop.hbase.io.util.Dictionary-">org.apache.hadoop.hbase.regionserver.wal.Compressor.writeCompressed(byte[], int, int, DataOutput, Dictionary)</a></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#writeFlatKey-org.apache.hadoop.hbase.Cell-java.io.OutputStream-">org.apache.hadoop.hbase.CellUtil.writeFlatKey(Cell, OutputStream)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#writeQualifierSkippingBytes-java.io.DataOutputStream-org.apache.hadoop.hbase.Cell-int-int-">org.apache.hadoop.hbase.CellUtil.writeQualifierSkippingBytes(DataOutputStream, Cell, int, int)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#writeRowKeyExcludingCommon-org.apache.hadoop.hbase.Cell-short-int-java.io.DataOutputStream-">org.apache.hadoop.hbase.CellUtil.writeRowKeyExcludingCommon(Cell, short, int, DataOutputStream)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/CellUtil.html#writeRowSkippingBytes-java.io.DataOutputStream-org.apache.hadoop.hbase.Cell-short-int-">org.apache.hadoop.hbase.CellUtil.writeRowSkippingBytes(DataOutputStream, Cell, short, int)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </td>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index b7ca58a..c1d8a07 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -12556,6 +12556,12 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html#ClientSnapshotDescriptionUtils--">ClientSnapshotDescriptionUtils()</a></span> - Constructor for class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot">ClientSnapshotDescriptionUtils</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">ClientTokenUtil</span></a> - Class in <a href="org/apache/hadoop/hbase/security/token/package-summary.html">org.apache.hadoop.hbase.security.token</a></dt>
+<dd>
+<div class="block">Utility methods for obtaining authentication tokens, that do not require hbase-server.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#ClientTokenUtil--">ClientTokenUtil()</a></span> - Constructor for class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ClientUtil</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ClientUtil.html#ClientUtil--">ClientUtil()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client">ClientUtil</a></dt>
@@ -39432,6 +39438,10 @@
 <dd>
 <div class="block">Gets the full path node name for the log file being split.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#getEncodedPath--">getEncodedPath()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFile.html#getEncodedPath--">getEncodedPath()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableSplit.html#getEncodedRegionName--">getEncodedRegionName()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSplit</a></dt>
 <dd>
 <div class="block">Returns the region's encoded name.</div>
@@ -62362,7 +62372,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityController.html#initVisibilityLabelService-org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment-">initVisibilityLabelService(RegionCoprocessorEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityController.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityContr [...]
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#injectedException">injectedException</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#injectedException">injectedException</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.Testing.html#injectedFailureCount">injectedFailureCount</a></span> - Variable in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.Testing.html" title="class in org.apache.hadoop.hbase.snapshot">ExportSnapshot.Testing</a></dt>
 <dd>&nbsp;</dd>
@@ -62370,7 +62380,7 @@
 <dd>
 <div class="block">Injects the given edge such that it becomes the managed entity.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#injectFault--">injectFault()</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#injectFault--">injectFault()</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.ExportMapper.html#injectTestFailure-org.apache.hadoop.mapreduce.Mapper.Context-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotFileInfo-">injectTestFailure(Mapper&lt;BytesWritable, NullWritable, NullWritable, NullWritable&gt;.Context, SnapshotProtos.SnapshotFileInfo)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/Expor [...]
 <dd>&nbsp;</dd>
@@ -70646,6 +70656,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSelector</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/FsDelegationToken.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">FsDelegationToken</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenProvider.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenProvider.html" title="class in org.apache.hadoop.hbase.security.token">TokenProvider</a></dt>
@@ -80415,26 +80427,55 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#ObserverOperationWithResult-org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverGetter-R-org.apache.hadoop.hbase.security.User-boolean-">ObserverOperationWithResult(CoprocessorHost.ObserverGetter&lt;C, O&gt;, R, User, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHos [...]
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken(Connection, User)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken(Connection, User)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>
 <div class="block">Obtain an authentication token for the given user and add it to the
  user's credentials.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken(Connection, User)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dd>
+<div class="block">See <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-"><code>ClientTokenUtil.obtainAndCacheToken(org.apache.hadoop.hbase.client.Connection,
+ org.apache.hadoop.hbase.security.User)</code></a>.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/TableBackupClient.html#obtainBackupMetaDataStr-org.apache.hadoop.hbase.backup.BackupInfo-">obtainBackupMetaDataStr(BackupInfo)</a></span> - Method in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/TableBackupClient.html" title="class in org.apache.hadoop.hbase.backup.impl">TableBackupClient</a></dt>
 <dd>
 <div class="block">Get backup request meta data dir as string.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken(AsyncConnection)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken(AsyncConnection)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>
 <div class="block">Obtain and return an authentication token for the current user.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken(Connection)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken(Connection)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>
 <div class="block">Obtain and return an authentication token for the current user.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken(Connection, User)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
+<dd>
+<div class="block">Obtain and return an authentication token for the given user.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken(AsyncConnection)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken(Connection)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken(Connection, User)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
 <dd>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainTokenForJob-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-org.apache.hadoop.mapreduce.Job-">obtainTokenForJob(Connection, User, Job)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
 <dd>
@@ -118557,14 +118598,30 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html#toTimeRange--">toTimeRange()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken(Token&lt;AuthenticationTokenIdentifier&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken(Token&lt;AuthenticationTokenIdentifier&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>
 <div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken(AuthenticationProtos.Token)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken(AuthenticationProtos.Token)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></dt>
 <dd>
 <div class="block">Converts a protobuf Token message back into a Token instance.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken(Token&lt;AuthenticationTokenIdentifier&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken(AuthenticationProtos.Token)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></dt>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PrivateCellUtil.html#toType-byte-">toType(byte)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PrivateCellUtil.html" title="class in org.apache.hadoop.hbase">PrivateCellUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PrivateCellUtil.html#toTypeByte-org.apache.hadoop.hbase.Cell.Type-">toTypeByte(Cell.Type)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PrivateCellUtil.html" title="class in org.apache.hadoop.hbase">PrivateCellUtil</a></dt>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 7c96111..0144a65 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/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.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/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/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/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>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/AsyncConnection.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/AsyncConnection.html
index ae56668..87e7279 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/AsyncConnection.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/AsyncConnection.html
@@ -383,10 +383,20 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
 <div class="block">Obtain and return an authentication token for the current user.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
index 55fa80b..a75f4cb 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
@@ -2462,26 +2462,55 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
-<td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                    <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
 <div class="block">Obtain an authentication token for the given user and add it to the
  user's credentials.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                   <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-"><code>ClientTokenUtil.obtainAndCacheToken(org.apache.hadoop.hbase.client.Connection,
+ org.apache.hadoop.hbase.security.User)</code></a>.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
+<div class="block">Obtain and return an authentication token for the current user.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+           <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">Obtain and return an authentication token for the given user.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
            <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainTokenForJob-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.mapred.JobConf-org.apache.hadoop.hbase.security.User-">obtainTokenForJob</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                  org.apache.hadoop.mapred.JobConf&nbsp;job,
@@ -2490,7 +2519,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  the credentials for the given map reduce job.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainTokenForJob-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-org.apache.hadoop.mapreduce.Job-">obtainTokenForJob</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                  <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 07da838..f728b52 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -424,21 +424,21 @@
 <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/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/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/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/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/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/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.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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index dc618a4..c51f7b2 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,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.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</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 127caa7..531254c 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/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>
+<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>
 </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 fbf2f31..6c5319a 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.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/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/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/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/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/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/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</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 48c0444..fd1afed 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/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/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.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 66ab650..ffd4e64 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -298,11 +298,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.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/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.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/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/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/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</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 148fecd..cb4ea86 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/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>
 <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>
 </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 a697a37..b962a3e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -296,10 +296,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/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/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/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>
 </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 b988a3c..b3e7c99 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
@@ -151,8 +151,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/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>
+<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>
 </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 848d41f..c49c655 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.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>
+<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>
 </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 484a90e..1956856 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -360,11 +360,11 @@
 <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/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>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.ServerLiveState.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.ServerLiveState</span></a></li>
-<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/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/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/ServerManager.ServerLiveState.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.ServerLiveState</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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</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 a8186f6..22d66d8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,10 +216,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.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>
 <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/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>
 </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 452eaee..7524d90 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/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>
+<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>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 53367e9..9cb778a 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -424,19 +424,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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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>
 </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 5a0cca1..dcfce9c 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -216,11 +216,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.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/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/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/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/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/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 01e883d..069c980 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/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/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/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</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/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/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</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>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
index 53eb228..08b2bc6 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.65">HStoreFile</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.68">HStoreFile</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></pre>
 <div class="block">A Store data file.  Stores usually have one or more of these files.  They
@@ -404,64 +404,68 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </td>
 </tr>
 <tr id="i8" class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getEncodedPath--">getEncodedPath</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getFileInfo--">getFileInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getFirstKey--">getFirstKey</a></span>()</code>
 <div class="block">Get the first key in this store file.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getHDFSBlockDistribution--">getHDFSBlockDistribution</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getLastKey--">getLastKey</a></span>()</code>
 <div class="block">Get the last key in this store file.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMaximumTimestamp--">getMaximumTimestamp</a></span>()</code>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMaxMemStoreTS--">getMaxMemStoreTS</a></span>()</code>
 <div class="block">Get max of the MemstoreTS in the KV's in this store file.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMaxSequenceId--">getMaxSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMetadataValue-byte:A-">getMetadataValue</a></span>(byte[]&nbsp;key)</code>
 <div class="block">Only used by the Striped Compaction Policy</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMinimumTimestamp--">getMinimumTimestamp</a></span>()</code>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getModificationTimestamp--">getModificationTimestamp</a></span>()</code>
 <div class="block">Get the modification time of this store file.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getPath--">getPath</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getPreadScanner-boolean-long-long-boolean-">getPreadScanner</a></span>(boolean&nbsp;cacheBlocks,
                long&nbsp;readPt,
@@ -470,19 +474,19 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Get a scanner which uses pread.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getQualifiedPath--">getQualifiedPath</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getReader--">getReader</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getRefCount--">getRefCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getStreamScanner-boolean-boolean-boolean-long-long-boolean-">getStreamScanner</a></span>(boolean&nbsp;canUseDropBehind,
                 boolean&nbsp;cacheBlocks,
@@ -493,59 +497,59 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Get a scanner which uses streaming read.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#initReader--">initReader</a></span>()</code>
 <div class="block">Initialize the reader used for pread.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isBulkLoadResult--">isBulkLoadResult</a></span>()</code>
 <div class="block">Check if this storefile was created by bulk load.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isCompactedAway--">isCompactedAway</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isHFile--">isHFile</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isMajorCompactionResult--">isMajorCompactionResult</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isReference--">isReference</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isReferencedInReads--">isReferencedInReads</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isSkipResetSeqId-byte:A-">isSkipResetSeqId</a></span>(byte[]&nbsp;skipResetSeqId)</code>
 <div class="block">Gets whether to skip resetting the sequence id for cells.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#markCompactedAway--">markCompactedAway</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#open--">open</a></span>()</code>
 <div class="block">Opens reader on this store file.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#toStringDetailed--">toStringDetailed</a></span>()</code>&nbsp;</td>
 </tr>
@@ -577,7 +581,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.67">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.70">LOG</a></pre>
 </li>
 </ul>
 <a name="STORE_FILE_READER_NO_READAHEAD">
@@ -586,7 +590,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>STORE_FILE_READER_NO_READAHEAD</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.69">STORE_FILE_READER_NO_READAHEAD</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.72">STORE_FILE_READER_NO_READAHEAD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStoreFile.STORE_FILE_READER_NO_READAHEAD">Constant Field Values</a></dd>
@@ -599,7 +603,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_STORE_FILE_READER_NO_READAHEAD</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.71">DEFAULT_STORE_FILE_READER_NO_READAHEAD</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.74">DEFAULT_STORE_FILE_READER_NO_READAHEAD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStoreFile.DEFAULT_STORE_FILE_READER_NO_READAHEAD">Constant Field Values</a></dd>
@@ -612,7 +616,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_SEQ_ID_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.76">MAX_SEQ_ID_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.79">MAX_SEQ_ID_KEY</a></pre>
 <div class="block">Max Sequence ID in FileInfo</div>
 </li>
 </ul>
@@ -622,7 +626,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MAJOR_COMPACTION_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.79">MAJOR_COMPACTION_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.82">MAJOR_COMPACTION_KEY</a></pre>
 <div class="block">Major compaction flag in FileInfo</div>
 </li>
 </ul>
@@ -632,7 +636,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>EXCLUDE_FROM_MINOR_COMPACTION_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.82">EXCLUDE_FROM_MINOR_COMPACTION_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.85">EXCLUDE_FROM_MINOR_COMPACTION_KEY</a></pre>
 <div class="block">Minor compaction flag in FileInfo</div>
 </li>
 </ul>
@@ -642,7 +646,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTION_EVENT_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.88">COMPACTION_EVENT_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.91">COMPACTION_EVENT_KEY</a></pre>
 <div class="block">Key for compaction event which contains the compacted storefiles in FileInfo</div>
 </li>
 </ul>
@@ -652,7 +656,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_FILTER_TYPE_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.91">BLOOM_FILTER_TYPE_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.94">BLOOM_FILTER_TYPE_KEY</a></pre>
 <div class="block">Bloom filter Type in FileInfo</div>
 </li>
 </ul>
@@ -662,7 +666,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_FILTER_PARAM_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.94">BLOOM_FILTER_PARAM_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.97">BLOOM_FILTER_PARAM_KEY</a></pre>
 <div class="block">Bloom filter param in FileInfo</div>
 </li>
 </ul>
@@ -672,7 +676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>DELETE_FAMILY_COUNT</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.97">DELETE_FAMILY_COUNT</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.100">DELETE_FAMILY_COUNT</a></pre>
 <div class="block">Delete Family Count in FileInfo</div>
 </li>
 </ul>
@@ -682,7 +686,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_BLOOM_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.100">LAST_BLOOM_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.103">LAST_BLOOM_KEY</a></pre>
 <div class="block">Last Bloom filter key in FileInfo</div>
 </li>
 </ul>
@@ -692,7 +696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMERANGE_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.103">TIMERANGE_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.106">TIMERANGE_KEY</a></pre>
 <div class="block">Key for Timerange information in metadata</div>
 </li>
 </ul>
@@ -702,7 +706,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>EARLIEST_PUT_TS</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.106">EARLIEST_PUT_TS</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.109">EARLIEST_PUT_TS</a></pre>
 <div class="block">Key for timestamp of earliest-put in metadata</div>
 </li>
 </ul>
@@ -712,7 +716,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MOB_CELLS_COUNT</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.109">MOB_CELLS_COUNT</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.112">MOB_CELLS_COUNT</a></pre>
 <div class="block">Key for the number of mob cells in metadata</div>
 </li>
 </ul>
@@ -722,7 +726,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_TASK_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.112">BULKLOAD_TASK_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.115">BULKLOAD_TASK_KEY</a></pre>
 <div class="block">Meta key set when store file is a result of a bulk load</div>
 </li>
 </ul>
@@ -732,7 +736,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_TIME_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.113">BULKLOAD_TIME_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.116">BULKLOAD_TIME_KEY</a></pre>
 </li>
 </ul>
 <a name="SKIP_RESET_SEQ_ID">
@@ -741,7 +745,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>SKIP_RESET_SEQ_ID</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.119">SKIP_RESET_SEQ_ID</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.122">SKIP_RESET_SEQ_ID</a></pre>
 <div class="block">Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets
  the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.</div>
 </li>
@@ -752,7 +756,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>fileInfo</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.121">fileInfo</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.124">fileInfo</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -761,7 +765,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.122">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.125">fs</a></pre>
 </li>
 </ul>
 <a name="cacheConf">
@@ -770,7 +774,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConf</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.125">cacheConf</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.128">cacheConf</a></pre>
 </li>
 </ul>
 <a name="refCount">
@@ -779,7 +783,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>refCount</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.130">refCount</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.133">refCount</a></pre>
 </li>
 </ul>
 <a name="noReadahead">
@@ -788,7 +792,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>noReadahead</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.132">noReadahead</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.135">noReadahead</a></pre>
 </li>
 </ul>
 <a name="primaryReplica">
@@ -797,7 +801,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryReplica</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.134">primaryReplica</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.137">primaryReplica</a></pre>
 </li>
 </ul>
 <a name="compactedAway">
@@ -806,7 +810,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedAway</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.137">compactedAway</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.140">compactedAway</a></pre>
 </li>
 </ul>
 <a name="sequenceid">
@@ -815,7 +819,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>sequenceid</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.141">sequenceid</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.144">sequenceid</a></pre>
 </li>
 </ul>
 <a name="maxMemstoreTS">
@@ -824,7 +828,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>maxMemstoreTS</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.145">maxMemstoreTS</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.148">maxMemstoreTS</a></pre>
 </li>
 </ul>
 <a name="firstKey">
@@ -833,7 +837,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>firstKey</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.148">firstKey</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.151">firstKey</a></pre>
 </li>
 </ul>
 <a name="lastKey">
@@ -842,7 +846,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>lastKey</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.150">lastKey</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.153">lastKey</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -851,7 +855,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.152">comparator</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.155">comparator</a></pre>
 </li>
 </ul>
 <a name="majorCompaction">
@@ -860,7 +864,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompaction</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.180">majorCompaction</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.183">majorCompaction</a></pre>
 </li>
 </ul>
 <a name="excludeFromMinorCompaction">
@@ -869,7 +873,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.184">excludeFromMinorCompaction</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.187">excludeFromMinorCompaction</a></pre>
 </li>
 </ul>
 <a name="compactedStoreFiles">
@@ -878,7 +882,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedStoreFiles</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.187">compactedStoreFiles</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.190">compactedStoreFiles</a></pre>
 </li>
 </ul>
 <a name="metadataMap">
@@ -887,7 +891,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>metadataMap</h4>
-<pre>private&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;byte[],byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.193">metadataMap</a></pre>
+<pre>private&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;byte[],byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.196">metadataMap</a></pre>
 <div class="block">Map of the metadata entries in the corresponding HFile. Populated when Reader is opened
  after which it is not modified again.</div>
 </li>
@@ -898,7 +902,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>reader</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.196">reader</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.199">reader</a></pre>
 </li>
 </ul>
 <a name="cfBloomType">
@@ -907,7 +911,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cfBloomType</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.202">cfBloomType</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.205">cfBloomType</a></pre>
 <div class="block">Bloom filter type specified in column family configuration. Does not
  necessarily correspond to the Bloom filter type present in the HFile.</div>
 </li>
@@ -926,7 +930,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>HStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.218">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.221">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                   org.apache.hadoop.fs.Path&nbsp;p,
                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -957,7 +961,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.236">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.239">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo,
                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -993,7 +997,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheConf</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.154">getCacheConf</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.157">getCacheConf</a>()</pre>
 </li>
 </ul>
 <a name="getFirstKey--">
@@ -1002,7 +1006,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFirstKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.159">getFirstKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.162">getFirstKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getFirstKey--">StoreFile</a></code></span></div>
 <div class="block">Get the first key in this store file.</div>
 <dl>
@@ -1017,7 +1021,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.164">getLastKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.167">getLastKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getLastKey--">StoreFile</a></code></span></div>
 <div class="block">Get the last key in this store file.</div>
 <dl>
@@ -1032,7 +1036,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.169">getComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.172">getComparator</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getComparator--">StoreFile</a></code></span></div>
 <div class="block">Get the comparator for comparing two cells.</div>
 <dl>
@@ -1047,7 +1051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxMemStoreTS</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.174">getMaxMemStoreTS</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.177">getMaxMemStoreTS</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxMemStoreTS--">StoreFile</a></code></span></div>
 <div class="block">Get max of the MemstoreTS in the KV's in this store file.</div>
 <dl>
@@ -1062,7 +1066,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.257">getFileInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.260">getFileInfo</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the StoreFile object associated to this StoreFile. null if the StoreFile is not a
@@ -1076,7 +1080,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.262">getPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.265">getPath</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getPath--">getPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1085,13 +1089,28 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </dl>
 </li>
 </ul>
+<a name="getEncodedPath--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getEncodedPath</h4>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.270">getEncodedPath</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getEncodedPath--">getEncodedPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Encoded Path if this StoreFile was made with a Stream.</dd>
+</dl>
+</li>
+</ul>
 <a name="getQualifiedPath--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifiedPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.267">getQualifiedPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.279">getQualifiedPath</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getQualifiedPath--">getQualifiedPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1106,7 +1125,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isReference</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.272">isReference</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.284">isReference</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isReference--">isReference</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1121,7 +1140,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isHFile</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.277">isHFile</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.289">isHFile</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isHFile--">isHFile</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1136,7 +1155,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isMajorCompactionResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.282">isMajorCompactionResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.294">isMajorCompactionResult</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isMajorCompactionResult--">isMajorCompactionResult</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1151,7 +1170,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.290">excludeFromMinorCompaction</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.302">excludeFromMinorCompaction</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#excludeFromMinorCompaction--">excludeFromMinorCompaction</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1166,7 +1185,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.295">getMaxSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.307">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxSequenceId--">getMaxSequenceId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1181,7 +1200,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getModificationTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.300">getModificationTimestamp</a>()
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.312">getModificationTimestamp</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getModificationTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the modification time of this store file. Usually will access the file system so throws
@@ -1200,7 +1219,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetadataValue</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.309">getMetadataValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.321">getMetadataValue</a>(byte[]&nbsp;key)</pre>
 <div class="block">Only used by the Striped Compaction Policy</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1216,7 +1235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isBulkLoadResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.314">isBulkLoadResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.326">isBulkLoadResult</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isBulkLoadResult--">StoreFile</a></code></span></div>
 <div class="block">Check if this storefile was created by bulk load. When a hfile is bulk loaded into HBase, we
  append <code>'_SeqId_&lt;id-when-loaded&gt;'</code> to the hfile name, unless
@@ -1237,7 +1256,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isCompactedAway</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.324">isCompactedAway</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.336">isCompactedAway</a>()</pre>
 </li>
 </ul>
 <a name="getRefCount--">
@@ -1246,7 +1265,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getRefCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.329">getRefCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.341">getRefCount</a>()</pre>
 </li>
 </ul>
 <a name="isReferencedInReads--">
@@ -1255,7 +1274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isReferencedInReads</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.336">isReferencedInReads</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.348">isReferencedInReads</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the file is still used in reads</dd>
@@ -1268,7 +1287,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getBulkLoadTimestamp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.343">getBulkLoadTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.355">getBulkLoadTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getBulkLoadTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Return the timestamp at which this bulk load file was generated.</div>
 <dl>
@@ -1283,7 +1302,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getHDFSBlockDistribution</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.353">getHDFSBlockDistribution</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.365">getHDFSBlockDistribution</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the cached value of HDFS blocks distribution. The cached value is calculated when store
@@ -1297,7 +1316,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>open</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.361">open</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.373">open</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Opens reader on this store file. Called by Constructor.</div>
 <dl>
@@ -1314,7 +1333,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>initReader</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.480">initReader</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.492">initReader</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Initialize the reader used for pread.</div>
 <dl>
@@ -1329,7 +1348,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>createStreamReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.496">createStreamReader</a>(boolean&nbsp;canUseDropBehind)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.508">createStreamReader</a>(boolean&nbsp;canUseDropBehind)
                                     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>
@@ -1343,7 +1362,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getPreadScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.509">getPreadScanner</a>(boolean&nbsp;cacheBlocks,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.521">getPreadScanner</a>(boolean&nbsp;cacheBlocks,
                                         long&nbsp;readPt,
                                         long&nbsp;scannerOrder,
                                         boolean&nbsp;canOptimizeForNonNullColumn)</pre>
@@ -1358,7 +1377,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStreamScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.520">getStreamScanner</a>(boolean&nbsp;canUseDropBehind,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.532">getStreamScanner</a>(boolean&nbsp;canUseDropBehind,
                                          boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;isCompaction,
                                          long&nbsp;readPt,
@@ -1380,7 +1399,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getReader</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.532">getReader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.544">getReader</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Current reader. Must call initReader first else returns null.</dd>
@@ -1395,7 +1414,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>closeStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.540">closeStoreFile</a>(boolean&nbsp;evictOnClose)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.552">closeStoreFile</a>(boolean&nbsp;evictOnClose)
                     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="paramLabel">Parameters:</span></dt>
@@ -1411,7 +1430,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.551">deleteStoreFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.563">deleteStoreFile</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete this file</div>
 <dl>
@@ -1426,7 +1445,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>markCompactedAway</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.557">markCompactedAway</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.569">markCompactedAway</a>()</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -1435,7 +1454,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.562">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.574">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><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></code></dd>
@@ -1448,7 +1467,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringDetailed</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.567">toStringDetailed</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.579">toStringDetailed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#toStringDetailed--">toStringDetailed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1463,7 +1482,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isSkipResetSeqId</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.593">isSkipResetSeqId</a>(byte[]&nbsp;skipResetSeqId)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.605">isSkipResetSeqId</a>(byte[]&nbsp;skipResetSeqId)</pre>
 <div class="block">Gets whether to skip resetting the sequence id for cells.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1479,7 +1498,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinimumTimestamp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.601">getMinimumTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.613">getMinimumTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMinimumTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 <dl>
@@ -1494,7 +1513,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaximumTimestamp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.607">getMaximumTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.619">getMaximumTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaximumTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 <dl>
@@ -1509,7 +1528,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCompactedStoreFiles</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.612">getCompactedStoreFiles</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.624">getCompactedStoreFiles</a>()</pre>
 </li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFile.html
index 2e0f83a..ae9dff0 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFile.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -149,72 +149,76 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 </td>
 </tr>
 <tr id="i3" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getEncodedPath--">getEncodedPath</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getFirstKey--">getFirstKey</a></span>()</code>
 <div class="block">Get the first key in this store file.</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getLastKey--">getLastKey</a></span>()</code>
 <div class="block">Get the last key in this store file.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaximumTimestamp--">getMaximumTimestamp</a></span>()</code>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxMemStoreTS--">getMaxMemStoreTS</a></span>()</code>
 <div class="block">Get max of the MemstoreTS in the KV's in this store file.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxSequenceId--">getMaxSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMinimumTimestamp--">getMinimumTimestamp</a></span>()</code>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getModificationTimestamp--">getModificationTimestamp</a></span>()</code>
 <div class="block">Get the modification time of this store file.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getPath--">getPath</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getQualifiedPath--">getQualifiedPath</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isBulkLoadResult--">isBulkLoadResult</a></span>()</code>
 <div class="block">Check if this storefile was created by bulk load.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isHFile--">isHFile</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isMajorCompactionResult--">isMajorCompactionResult</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isReference--">isReference</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#toStringDetailed--">toStringDetailed</a></span>()</code>&nbsp;</td>
 </tr>
@@ -286,13 +290,26 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 </dl>
 </li>
 </ul>
+<a name="getEncodedPath--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getEncodedPath</h4>
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.71">getEncodedPath</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Encoded Path if this StoreFile was made with a Stream.</dd>
+</dl>
+</li>
+</ul>
 <a name="getQualifiedPath--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifiedPath</h4>
-<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.71">getQualifiedPath</a>()</pre>
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.76">getQualifiedPath</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Returns the qualified path of this StoreFile</dd>
@@ -305,7 +322,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>isReference</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.76">isReference</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.81">isReference</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this is a StoreFile Reference.</dd>
@@ -318,7 +335,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>isHFile</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.81">isHFile</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.86">isHFile</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this is HFile.</dd>
@@ -331,7 +348,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>isMajorCompactionResult</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.86">isMajorCompactionResult</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.91">isMajorCompactionResult</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this file was made by a major compaction.</dd>
@@ -344,7 +361,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.91">excludeFromMinorCompaction</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.96">excludeFromMinorCompaction</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this file should not be part of a minor compaction.</dd>
@@ -357,7 +374,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.96">getMaxSequenceId</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.101">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>This files maximum edit sequence id.</dd>
@@ -370,7 +387,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getModificationTimestamp</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.102">getModificationTimestamp</a>()
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.107">getModificationTimestamp</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the modification time of this store file. Usually will access the file system so throws
  IOException.</div>
@@ -386,7 +403,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>isBulkLoadResult</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.112">isBulkLoadResult</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.117">isBulkLoadResult</a>()</pre>
 <div class="block">Check if this storefile was created by bulk load. When a hfile is bulk loaded into HBase, we
  append <code>'_SeqId_&lt;id-when-loaded&gt;'</code> to the hfile name, unless
  "hbase.mapreduce.bulkload.assign.sequenceNumbers" is explicitly turned off. If
@@ -404,7 +421,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getBulkLoadTimestamp</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.117">getBulkLoadTimestamp</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.122">getBulkLoadTimestamp</a>()</pre>
 <div class="block">Return the timestamp at which this bulk load file was generated.</div>
 </li>
 </ul>
@@ -414,7 +431,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringDetailed</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.122">toStringDetailed</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.127">toStringDetailed</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a length description of this StoreFile, suitable for debug output</dd>
@@ -427,7 +444,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinimumTimestamp</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.127">getMinimumTimestamp</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.132">getMinimumTimestamp</a>()</pre>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 </li>
 </ul>
@@ -437,7 +454,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMaximumTimestamp</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.132">getMaximumTimestamp</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html#line.137">getMaximumTimestamp</a>()</pre>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 8ea931c..2a624ab 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -716,19 +716,19 @@
 <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/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/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</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/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/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
 </ul>
 </li>
 </ul>
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 4ec48a48..4a74af9 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/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/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/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/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index 02505ac..818a04c 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -162,8 +162,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.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</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 48de590..df89bd7 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -162,11 +162,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.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType</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/SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType</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/SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType</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.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html b/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
index 3f4c334..9296203 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
@@ -2131,17 +2131,36 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
-<td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                    <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
 <div class="block">Obtain an authentication token for the given user and add it to the
  user's credentials.</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                   <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-"><code>ClientTokenUtil.obtainAndCacheToken(org.apache.hadoop.hbase.client.Connection,
+ org.apache.hadoop.hbase.security.User)</code></a>.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+           <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">Obtain and return an authentication token for the given user.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
            <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 <tr class="altColor">
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/security/token/AuthenticationTokenSelector.html b/devapidocs/org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html
index 78f775a..a476a1e 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" target="_top">Frames</a></li>
@@ -275,7 +275,7 @@ implements org.apache.hadoop.security.token.TokenSelector&lt;<a href="../../../.
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" target="_top">Frames</a></li>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html b/devapidocs/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html
new file mode 100644
index 0000000..9f60ba6
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html
@@ -0,0 +1,486 @@
+<!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>ClientTokenUtil (Apache HBase 3.0.0-SNAPSHOT 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="ClientTokenUtil (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</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 class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ClientTokenUtil.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>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="ClientTokenUtil.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>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.security.token</div>
+<h2 title="Class ClientTokenUtil" class="title">Class ClientTokenUtil</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>org.apache.hadoop.hbase.security.token.ClientTokenUtil</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Public
+public final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.48">ClientTokenUtil</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">Utility methods for obtaining authentication tokens, that do not require hbase-server.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static com.google.protobuf.ServiceException</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#injectedException">injectedException</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#ClientTokenUtil--">ClientTokenUtil</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#injectFault--">injectFault</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                   <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">Obtain an authentication token for the given user and add it to the
+ user's credentials.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
+<div class="block">Obtain and return an authentication token for the current user.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
+<div class="block">Obtain and return an authentication token for the current user.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+           <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">Obtain and return an authentication token for the given user.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken</a></span>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</code>
+<div class="block">Converts a protobuf Token message back into a Token instance.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken</a></span>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)</code>
+<div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<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></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.49">LOG</a></pre>
+</li>
+</ul>
+<a name="injectedException">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>injectedException</h4>
+<pre>private static&nbsp;com.google.protobuf.ServiceException <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.52">injectedException</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ClientTokenUtil--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ClientTokenUtil</h4>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.54">ClientTokenUtil</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="injectFault--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>injectFault</h4>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.56">injectFault</a>()
+                         throws com.google.protobuf.ServiceException</pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>com.google.protobuf.ServiceException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>obtainToken</h4>
+<pre>@InterfaceAudience.Private
+public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/o [...]
+<div class="block">Obtain and return an authentication token for the current user.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conn</code> - The async HBase cluster connection</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the authentication token instance, wrapped by a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a>.</dd>
+</dl>
+</li>
+</ul>
+<a name="obtainToken-org.apache.hadoop.hbase.client.Connection-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>obtainToken</h4>
+<pre>@InterfaceAudience.Private
+static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.98">obtainToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hba [...]
+                                                                                                             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">Obtain and return an authentication token for the current user.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conn</code> - The HBase cluster connection</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the authentication token instance</dd>
+<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> - if a remote error or serialization problem occurs.</dd>
+</dl>
+</li>
+</ul>
+<a name="toToken-org.apache.hadoop.security.token.Token-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toToken</h4>
+<pre>@InterfaceAudience.Private
+static&nbsp;org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.130">toToken</a>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)</pre>
+<div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>token</code> - the Token instance to copy</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the protobuf Token message</dd>
+</dl>
+</li>
+</ul>
+<a name="toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toToken</h4>
+<pre>@InterfaceAudience.Private
+static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.147">toToken</a>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</pre>
+<div class="block">Converts a protobuf Token message back into a Token instance.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>proto</code> - the protobuf Token message</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the Token instance</dd>
+</dl>
+</li>
+</ul>
+<a name="obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>obtainToken</h4>
+<pre>@InterfaceAudience.Private
+static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.162">obtainToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hb [...]
+                                                                                                                    <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
+                                                                                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                                                                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block">Obtain and return an authentication token for the given user.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conn</code> - The HBase cluster connection</dd>
+<dd><code>user</code> - The user to obtain a token for</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the authentication token instance</dd>
+<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>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>obtainAndCacheToken</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#line.180">obtainAndCacheToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                                       <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
+                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block">Obtain an authentication token for the given user and add it to the
+ user's credentials.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conn</code> - The HBase cluster connection</dd>
+<dd><code>user</code> - The user for whom to obtain the token</dd>
+<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> - If making a remote call to the authentication service fails</dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - If executing as the given user is interrupted</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= 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 class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ClientTokenUtil.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>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="ClientTokenUtil.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>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</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/devapidocs/org/apache/hadoop/hbase/security/token/FsDelegationToken.html b/devapidocs/org/apache/hadoop/hbase/security/token/FsDelegationToken.html
index ce83c81..88edffc 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/FsDelegationToken.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/FsDelegationToken.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenProvider.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -449,7 +449,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/security/token/AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenProvider.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/devapidocs/org/apache/hadoop/hbase/security/token/TokenUtil.html b/devapidocs/org/apache/hadoop/hbase/security/token/TokenUtil.html
index 69e9ff6..d4648c5 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/TokenUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/TokenUtil.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":41,"i7":41,"i8":41,"i9":9,"i10":9,"i11":41,"i12":41};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.56">TokenUtil</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.44">TokenUtil</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">Utility methods for obtaining authentication tokens.</div>
 </li>
@@ -132,10 +132,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static com.google.protobuf.ServiceException</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#injectedException">injectedException</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
@@ -166,7 +162,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tab [...]
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
@@ -209,37 +205,45 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#getClusterId-org.apache.hadoop.security.token.Token-">getClusterId</a></span>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
-<td class="colFirst"><code>private static void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#injectFault--">injectFault</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i6" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainAndCacheToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                    <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
-<div class="block">Obtain an authentication token for the given user and add it to the
- user's credentials.</div>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-"><code>ClientTokenUtil.obtainAndCacheToken(org.apache.hadoop.hbase.client.Connection,
+ org.apache.hadoop.hbase.security.User)</code></a>.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
            <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainTokenForJob-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.mapred.JobConf-org.apache.hadoop.hbase.security.User-">obtainTokenForJob</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                  org.apache.hadoop.mapred.JobConf&nbsp;job,
@@ -248,7 +252,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  the credentials for the given map reduce job.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainTokenForJob-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-org.apache.hadoop.mapreduce.Job-">obtainTokenForJob</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                  <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
@@ -257,16 +261,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  the credentials for the given map reduce job.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken</a></span>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</code>
-<div class="block">Converts a protobuf Token message back into a Token instance.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken</a></span>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)</code>
-<div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 </table>
@@ -294,19 +306,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="LOG">
 <!--   -->
 </a>
-<ul class="blockList">
-<li class="blockList">
-<h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.58">LOG</a></pre>
-</li>
-</ul>
-<a name="injectedException">
-<!--   -->
-</a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>injectedException</h4>
-<pre>private static&nbsp;com.google.protobuf.ServiceException <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.61">injectedException</a></pre>
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.46">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -323,7 +326,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TokenUtil</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.56">TokenUtil</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.44">TokenUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -334,34 +337,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="injectFault--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>injectFault</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.63">injectFault</a>()
-                         throws com.google.protobuf.ServiceException</pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>com.google.protobuf.ServiceException</code></dd>
-</dl>
-</li>
-</ul>
 <a name="obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>obtainToken</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;&nbsp;<a href="../../../../../../src-h [...]
-<div class="block">Obtain and return an authentication token for the current user.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>conn</code> - The async HBase cluster connection</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the authentication token instance, wrapped by a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent"><code>CompletableFuture</code></a>.</dd>
-</dl>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/o [...]
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-"><code>ClientTokenUtil.obtainToken(org.apache.hadoop.hbase.client.AsyncConnection)</code></a>.</div>
 </li>
 </ul>
 <a name="obtainToken-org.apache.hadoop.hbase.client.Connection-">
@@ -370,16 +357,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>obtainToken</h4>
-<pre>public static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.102">obtainToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.had [...]
-                                                                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+public static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.67">obtainToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hb [...]
+                                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-"><code>ClientTokenUtil.obtainToken(org.apache.hadoop.hbase.client.Connection)</code></a>.</div>
 <dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>conn</code> - The HBase cluster connection</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the authentication token instance</dd>
 <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> - if a remote error or serialization problem occurs.</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>
@@ -389,14 +376,12 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toToken</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.132">toToken</a>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)</pre>
-<div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>token</code> - the Token instance to copy</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the protobuf Token message</dd>
-</dl>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+public static&nbsp;org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.80">toToken</a>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.security.token.Token-"><code>ClientTokenUtil.toToken(org.apache.hadoop.security.token.Token)</code></a>.</div>
 </li>
 </ul>
 <a name="obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">
@@ -405,55 +390,67 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>obtainToken</h4>
-<pre>public static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.147">obtainToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.had [...]
-                                                                                                <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                                                                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                                                                                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+public static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.92">obtainToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hb [...]
+                                                                                                            <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
+                                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                                                                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-"><code>ClientTokenUtil.obtainToken(org.apache.hadoop.hbase.client.Connection,
+ org.apache.hadoop.hbase.security.User)</code></a>.</div>
 <dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>conn</code> - The HBase cluster connection</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the authentication token instance</dd>
 <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>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
 </dl>
 </li>
 </ul>
-<a name="getClusterId-org.apache.hadoop.security.token.Token-">
+<a name="obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getClusterId</h4>
-<pre>private static&nbsp;org.apache.hadoop.io.Text&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.158">getClusterId</a>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)
-                                               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>
+<h4>obtainAndCacheToken</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.101">obtainAndCacheToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                                       <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
+                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-"><code>ClientTokenUtil.obtainAndCacheToken(org.apache.hadoop.hbase.client.Connection,
+ org.apache.hadoop.hbase.security.User)</code></a>.</div>
 <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>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
 </dl>
 </li>
 </ul>
-<a name="obtainAndCacheToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">
+<a name="toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>obtainAndCacheToken</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.172">obtainAndCacheToken</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
-                                       <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
-<div class="block">Obtain an authentication token for the given user and add it to the
- user's credentials.</div>
+<h4>toToken</h4>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
+public static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.114">toToken</a>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+<div class="block">See <a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.security.token.Token-"><code>ClientTokenUtil.toToken(org.apache.hadoop.security.token.Token)</code></a>.</div>
+</li>
+</ul>
+<a name="getClusterId-org.apache.hadoop.security.token.Token-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getClusterId</h4>
+<pre>private static&nbsp;org.apache.hadoop.io.Text&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.118">getClusterId</a>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;token)
+                                               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="paramLabel">Parameters:</span></dt>
-<dd><code>conn</code> - The HBase cluster connection</dd>
-<dd><code>user</code> - The user for whom to obtain the token</dd>
 <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> - If making a remote call to the authentication service fails</dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - If executing as the given user is interrupted</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>
@@ -463,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>obtainTokenForJob</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.207">obtainTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.133">obtainTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                                      <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                      org.apache.hadoop.mapreduce.Job&nbsp;job)
                               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>,
@@ -487,7 +484,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>obtainTokenForJob</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.243">obtainTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.169">obtainTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                                      org.apache.hadoop.mapred.JobConf&nbsp;job,
                                      <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                               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>,
@@ -511,7 +508,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addTokenForJob</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.279">addTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.205">addTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                                   org.apache.hadoop.mapred.JobConf&nbsp;job,
                                   <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                            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>,
@@ -535,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>addTokenForJob</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.299">addTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.225">addTokenForJob</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                                   <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                   org.apache.hadoop.mapreduce.Job&nbsp;job)
                            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>,
@@ -559,7 +556,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addTokenIfMissing</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.318">addTokenIfMissing</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.244">addTokenIfMissing</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                                         <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -580,10 +577,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="getAuthToken-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.User-">
 <!--   -->
 </a>
-<ul class="blockList">
+<ul class="blockListLast">
 <li class="blockList">
 <h4>getAuthToken</h4>
-<pre>private static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.333">getAuthToken</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.259">getAuthToken</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                                                   <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                                                                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -597,22 +594,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>toToken</h4>
-<pre>public static&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html#line.355">toToken</a>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</pre>
-<div class="block">Converts a protobuf Token message back into a Token instance.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>proto</code> - the protobuf Token message</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the Token instance</dd>
-</dl>
-</li>
-</ul>
 </li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/token/class-use/AuthenticationTokenIdentifier.html b/devapidocs/org/apache/hadoop/hbase/security/token/class-use/AuthenticationTokenIdentifier.html
index fa862ae..fbc300d 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/class-use/AuthenticationTokenIdentifier.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/class-use/AuthenticationTokenIdentifier.html
@@ -128,32 +128,73 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
+<div class="block">Obtain and return an authentication token for the current user.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.AsyncConnection-">obtainToken</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/client/AsyncConnection.html" title="interface in org.apache.hadoop.hbase.client">AsyncConnection</a>&nbsp;conn)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
 <div class="block">Obtain and return an authentication token for the current user.</div>
 </td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-">obtainToken</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+           <a href="../../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
+<div class="block">Obtain and return an authentication token for the given user.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#obtainToken-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.security.User-">obtainToken</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
            <a href="../../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
-<div class="block">Obtain and return an authentication token for the current user.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AuthenticationTokenSelector.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html#selectToken-org.apache.hadoop.io.Text-java.util.Collection-">selectToken</a></span>(org.apache.hadoop.io.Text&nbsp;serviceName,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.security.token.Token&lt;? extends org.apache.hadoop.security.token.TokenIdentifier&gt;&gt;&nbsp;tokens)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken</a></span>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</code>
+<div class="block">Converts a protobuf Token message back into a Token instance.</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token-">toToken</a></span>(org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token&nbsp;proto)</code>
-<div class="block">Converts a protobuf Token message back into a Token instance.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 </tbody>
@@ -187,9 +228,19 @@
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#getClusterId-org.apache.hadoop.security.token.Token-">getClusterId</a></span>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifi [...]
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token</code></td>
+<td class="colLast"><span class="typeNameLabel">ClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken</a></span>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdenti [...]
+<div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Token</code></td>
 <td class="colLast"><span class="typeNameLabel">TokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">toToken</a></span>(org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt; [...]
-<div class="block">Converts a Token instance (with embedded identifier) to the protobuf representation.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">External users should not use this method. Please post on
+   the HBase dev mailing list if you need this method. Internal
+   HBase code should use <a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
+</div>
 </td>
 </tr>
 </tbody>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html b/devapidocs/org/apache/hadoop/hbase/security/token/class-use/ClientTokenUtil.html
similarity index 82%
copy from testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html
copy to devapidocs/org/apache/hadoop/hbase/security/token/class-use/ClientTokenUtil.html
index 1b8f483..6f03442 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/class-use/ClientTokenUtil.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.security.token.TestTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<title>Uses of Class org.apache.hadoop.hbase.security.token.ClientTokenUtil (Apache HBase 3.0.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.security.token.TestTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)";
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.security.token.ClientTokenUtil (Apache HBase 3.0.0-SNAPSHOT API)";
         }
     }
     catch(err) {
@@ -33,7 +33,7 @@
 <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/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">Class</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">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>
@@ -47,8 +47,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html" target="_top">Frames</a></li>
-<li><a href="TestTokenUtil.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/ClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="ClientTokenUtil.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>
@@ -70,9 +70,9 @@
 </a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
 <div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.security.token.TestTokenUtil" class="title">Uses of Class<br>org.apache.hadoop.hbase.security.token.TestTokenUtil</h2>
+<h2 title="Uses of Class org.apache.hadoop.hbase.security.token.ClientTokenUtil" class="title">Uses of Class<br>org.apache.hadoop.hbase.security.token.ClientTokenUtil</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.security.token.TestTokenUtil</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.security.token.ClientTokenUtil</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->
@@ -84,7 +84,7 @@
 <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/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">Class</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">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>
@@ -98,8 +98,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html" target="_top">Frames</a></li>
-<li><a href="TestTokenUtil.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/ClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="ClientTokenUtil.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/devapidocs/org/apache/hadoop/hbase/security/token/package-frame.html b/devapidocs/org/apache/hadoop/hbase/security/token/package-frame.html
index 934d068..cb4c208 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/package-frame.html
@@ -17,6 +17,7 @@
 <li><a href="AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">AuthenticationTokenIdentifier</a></li>
 <li><a href="AuthenticationTokenSecretManager.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">AuthenticationTokenSecretManager</a></li>
 <li><a href="AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">AuthenticationTokenSelector</a></li>
+<li><a href="ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">ClientTokenUtil</a></li>
 <li><a href="FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">FsDelegationToken</a></li>
 <li><a href="TokenProvider.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TokenProvider</a></li>
 <li><a href="TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TokenUtil</a></li>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/token/package-summary.html b/devapidocs/org/apache/hadoop/hbase/security/token/package-summary.html
index df10e2c..f249a70 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/package-summary.html
@@ -108,25 +108,31 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">ClientTokenUtil</a></td>
+<td class="colLast">
+<div class="block">Utility methods for obtaining authentication tokens, that do not require hbase-server.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">FsDelegationToken</a></td>
 <td class="colLast">
 <div class="block">Helper class to obtain a filesystem delegation token.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenProvider.html" title="class in org.apache.hadoop.hbase.security.token">TokenProvider</a></td>
 <td class="colLast">
 <div class="block">Provides a service for obtaining authentication tokens via the
  <code>AuthenticationProtos</code> AuthenticationService coprocessor service.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TokenUtil</a></td>
 <td class="colLast">
 <div class="block">Utility methods for obtaining authentication tokens.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a></td>
 <td class="colLast">
 <div class="block">Synchronizes token encryption keys across cluster nodes.</div>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/token/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/token/package-tree.html
index d5f7673..7f831d7 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/token/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/token/package-tree.html
@@ -83,6 +83,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">AuthenticationKey</span></a> (implements org.apache.hadoop.io.Writable)</li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSelector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">AuthenticationTokenSelector</span></a> (implements org.apache.hadoop.security.token.TokenSelector&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">ClientTokenUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/FsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">FsDelegationToken</span></a></li>
 <li type="circle">org.apache.hadoop.security.token.SecretManager&lt;T&gt;
 <ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index c175257..76a6c08 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -211,9 +211,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/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/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/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/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </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 6e5871d..34b2799 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -540,14 +540,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/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/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/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/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/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/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/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/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/HbckErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HbckErrorReporter.ERROR_CODE</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>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index bdae3d8..8c4c41b 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -192,8 +192,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/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index ead5680..3189490 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -1130,6 +1130,7 @@
 <li type="circle">org.apache.hadoop.hbase.exceptions.<a href="org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.html" title="class in org.apache.hadoop.hbase.exceptions"><span class="typeNameLink">ClientExceptionsUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ClientIdGenerator.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ClientIdGenerator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot"><span class="typeNameLink">ClientSnapshotDescriptionUtils</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">ClientTokenUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ClientUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ClientUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">ClientUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/Cluster.html" title="class in org.apache.hadoop.hbase.rest.client"><span class="typeNameLink">Cluster</span></a></li>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 3bb66f0..cdd744c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,9 +16,9 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <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 = "a85c6b48672552136ead76a682458c884a558dc2";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "e890776fe04697a32a71ac6a4a5dada9bc549d80";<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 = "Thu Sep 19 14:40:56 UTC 2019";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Fri Sep 20 14:35:24 UTC 2019";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites-he-de.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
 <span class="sourceLineNo">015</span>  public static final String srcChecksum = "(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/regionserver/HStoreFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
index dc7b91a..b4d67be 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
@@ -27,600 +27,612 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.Collections;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.HashSet;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Map;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Optional;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.OptionalLong;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Set;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.Path;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.Cell;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.Logger;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.slf4j.LoggerFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>/**<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * A Store data file.  Stores usually have one or more of these files.  They<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * are produced by flushing the memstore to disk.  To<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * create, instantiate a writer using {@link StoreFileWriter.Builder}<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * and append data. Be sure to add any metadata before calling close on the<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * Writer (Use the appendMetadata convenience methods). On close, a StoreFile<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * is sitting in the Filesystem.  To refer to it, create a StoreFile instance<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * passing filesystem and path.  To read, call {@link #initReader()}<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;StoreFiles may also reference store files in another Store.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * The reason for this weird pattern where you use a different instance for the<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * writer and a reader is that we write once but read a lot more.<a name="line.62"></a>
-<span class="sourceLineNo">063</span> */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@InterfaceAudience.Private<a name="line.64"></a>
-<span class="sourceLineNo">065</span>public class HStoreFile implements StoreFile {<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(HStoreFile.class.getName());<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public static final String STORE_FILE_READER_NO_READAHEAD = "hbase.store.reader.no-readahead";<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final boolean DEFAULT_STORE_FILE_READER_NO_READAHEAD = false;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  // Keys for fileinfo values in HFile<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  /** Max Sequence ID in FileInfo */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public static final byte[] MAX_SEQ_ID_KEY = Bytes.toBytes("MAX_SEQ_ID_KEY");<a name="line.76"></a>
+<span class="sourceLineNo">022</span>import java.io.UnsupportedEncodingException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.net.URLEncoder;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashSet;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Optional;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.OptionalLong;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Set;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.fs.FileSystem;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.Path;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.Cell;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>/**<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * A Store data file.  Stores usually have one or more of these files.  They<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * are produced by flushing the memstore to disk.  To<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * create, instantiate a writer using {@link StoreFileWriter.Builder}<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * and append data. Be sure to add any metadata before calling close on the<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * Writer (Use the appendMetadata convenience methods). On close, a StoreFile<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * is sitting in the Filesystem.  To refer to it, create a StoreFile instance<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * passing filesystem and path.  To read, call {@link #initReader()}<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * &lt;p&gt;StoreFiles may also reference store files in another Store.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> *<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * The reason for this weird pattern where you use a different instance for the<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * writer and a reader is that we write once but read a lot more.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>@InterfaceAudience.Private<a name="line.67"></a>
+<span class="sourceLineNo">068</span>public class HStoreFile implements StoreFile {<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final Logger LOG = LoggerFactory.getLogger(HStoreFile.class.getName());<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static final String STORE_FILE_READER_NO_READAHEAD = "hbase.store.reader.no-readahead";<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final boolean DEFAULT_STORE_FILE_READER_NO_READAHEAD = false;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  // Keys for fileinfo values in HFile<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /** Major compaction flag in FileInfo */<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public static final byte[] MAJOR_COMPACTION_KEY = Bytes.toBytes("MAJOR_COMPACTION_KEY");<a name="line.79"></a>
+<span class="sourceLineNo">078</span>  /** Max Sequence ID in FileInfo */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final byte[] MAX_SEQ_ID_KEY = Bytes.toBytes("MAX_SEQ_ID_KEY");<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  /** Minor compaction flag in FileInfo */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public static final byte[] EXCLUDE_FROM_MINOR_COMPACTION_KEY =<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      Bytes.toBytes("EXCLUDE_FROM_MINOR_COMPACTION");<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>
-<span class="sourceLineNo">086</span>   * Key for compaction event which contains the compacted storefiles in FileInfo<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public static final byte[] COMPACTION_EVENT_KEY = Bytes.toBytes("COMPACTION_EVENT_KEY");<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  /** Bloom filter Type in FileInfo */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final byte[] BLOOM_FILTER_TYPE_KEY = Bytes.toBytes("BLOOM_FILTER_TYPE");<a name="line.91"></a>
+<span class="sourceLineNo">081</span>  /** Major compaction flag in FileInfo */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static final byte[] MAJOR_COMPACTION_KEY = Bytes.toBytes("MAJOR_COMPACTION_KEY");<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  /** Minor compaction flag in FileInfo */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public static final byte[] EXCLUDE_FROM_MINOR_COMPACTION_KEY =<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      Bytes.toBytes("EXCLUDE_FROM_MINOR_COMPACTION");<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * Key for compaction event which contains the compacted storefiles in FileInfo<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public static final byte[] COMPACTION_EVENT_KEY = Bytes.toBytes("COMPACTION_EVENT_KEY");<a name="line.91"></a>
 <span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  /** Bloom filter param in FileInfo */<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public static final byte[] BLOOM_FILTER_PARAM_KEY = Bytes.toBytes("BLOOM_FILTER_PARAM");<a name="line.94"></a>
+<span class="sourceLineNo">093</span>  /** Bloom filter Type in FileInfo */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final byte[] BLOOM_FILTER_TYPE_KEY = Bytes.toBytes("BLOOM_FILTER_TYPE");<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>  /** Delete Family Count in FileInfo */<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  public static final byte[] DELETE_FAMILY_COUNT = Bytes.toBytes("DELETE_FAMILY_COUNT");<a name="line.97"></a>
+<span class="sourceLineNo">096</span>  /** Bloom filter param in FileInfo */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static final byte[] BLOOM_FILTER_PARAM_KEY = Bytes.toBytes("BLOOM_FILTER_PARAM");<a name="line.97"></a>
 <span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  /** Last Bloom filter key in FileInfo */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public static final byte[] LAST_BLOOM_KEY = Bytes.toBytes("LAST_BLOOM_KEY");<a name="line.100"></a>
+<span class="sourceLineNo">099</span>  /** Delete Family Count in FileInfo */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public static final byte[] DELETE_FAMILY_COUNT = Bytes.toBytes("DELETE_FAMILY_COUNT");<a name="line.100"></a>
 <span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  /** Key for Timerange information in metadata */<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static final byte[] TIMERANGE_KEY = Bytes.toBytes("TIMERANGE");<a name="line.103"></a>
+<span class="sourceLineNo">102</span>  /** Last Bloom filter key in FileInfo */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public static final byte[] LAST_BLOOM_KEY = Bytes.toBytes("LAST_BLOOM_KEY");<a name="line.103"></a>
 <span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  /** Key for timestamp of earliest-put in metadata */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final byte[] EARLIEST_PUT_TS = Bytes.toBytes("EARLIEST_PUT_TS");<a name="line.106"></a>
+<span class="sourceLineNo">105</span>  /** Key for Timerange information in metadata */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public static final byte[] TIMERANGE_KEY = Bytes.toBytes("TIMERANGE");<a name="line.106"></a>
 <span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /** Key for the number of mob cells in metadata */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public static final byte[] MOB_CELLS_COUNT = Bytes.toBytes("MOB_CELLS_COUNT");<a name="line.109"></a>
+<span class="sourceLineNo">108</span>  /** Key for timestamp of earliest-put in metadata */<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public static final byte[] EARLIEST_PUT_TS = Bytes.toBytes("EARLIEST_PUT_TS");<a name="line.109"></a>
 <span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  /** Meta key set when store file is a result of a bulk load */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static final byte[] BULKLOAD_TASK_KEY = Bytes.toBytes("BULKLOAD_SOURCE_TASK");<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  public static final byte[] BULKLOAD_TIME_KEY = Bytes.toBytes("BULKLOAD_TIMESTAMP");<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   */<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public static final byte[] SKIP_RESET_SEQ_ID = Bytes.toBytes("SKIP_RESET_SEQ_ID");<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private final StoreFileInfo fileInfo;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  private final FileSystem fs;<a name="line.122"></a>
+<span class="sourceLineNo">111</span>  /** Key for the number of mob cells in metadata */<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public static final byte[] MOB_CELLS_COUNT = Bytes.toBytes("MOB_CELLS_COUNT");<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  /** Meta key set when store file is a result of a bulk load */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public static final byte[] BULKLOAD_TASK_KEY = Bytes.toBytes("BULKLOAD_SOURCE_TASK");<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static final byte[] BULKLOAD_TIME_KEY = Bytes.toBytes("BULKLOAD_TIMESTAMP");<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  public static final byte[] SKIP_RESET_SEQ_ID = Bytes.toBytes("SKIP_RESET_SEQ_ID");<a name="line.122"></a>
 <span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  // Block cache configuration and reference.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private final CacheConfig cacheConf;<a name="line.125"></a>
+<span class="sourceLineNo">124</span>  private final StoreFileInfo fileInfo;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private final FileSystem fs;<a name="line.125"></a>
 <span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  // Counter that is incremented every time a scanner is created on the<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // store file. It is decremented when the scan on the store file is<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // done.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private final AtomicInteger refCount = new AtomicInteger(0);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private final boolean noReadahead;<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private final boolean primaryReplica;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // Indicates if the file got compacted<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private volatile boolean compactedAway = false;<a name="line.137"></a>
+<span class="sourceLineNo">127</span>  // Block cache configuration and reference.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private final CacheConfig cacheConf;<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  // Counter that is incremented every time a scanner is created on the<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // store file. It is decremented when the scan on the store file is<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // done.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private final AtomicInteger refCount = new AtomicInteger(0);<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private final boolean noReadahead;<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  private final boolean primaryReplica;<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // Keys for metadata stored in backing HFile.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // Set when we obtain a Reader.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private long sequenceid = -1;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  // max of the MemstoreTS in the KV's in this store<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // Set when we obtain a Reader.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private long maxMemstoreTS = -1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  // firstKey, lastkey and cellComparator will be set when openReader.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private Optional&lt;Cell&gt; firstKey;<a name="line.148"></a>
+<span class="sourceLineNo">139</span>  // Indicates if the file got compacted<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private volatile boolean compactedAway = false;<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  // Keys for metadata stored in backing HFile.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Set when we obtain a Reader.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private long sequenceid = -1;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  // max of the MemstoreTS in the KV's in this store<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // Set when we obtain a Reader.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  private long maxMemstoreTS = -1;<a name="line.148"></a>
 <span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private Optional&lt;Cell&gt; lastKey;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private CellComparator comparator;<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public CacheConfig getCacheConf() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return cacheConf;<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>  @Override<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    return firstKey;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
-<span class="sourceLineNo">162</span><a name="line.162"></a>
-<span class="sourceLineNo">163</span>  @Override<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return lastKey;<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">168</span>  @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public CellComparator getComparator() {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return comparator;<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>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public long getMaxMemStoreTS() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return maxMemstoreTS;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  // If true, this file was product of a major compaction.  Its then set<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  // whenever you get a Reader.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private AtomicBoolean majorCompaction = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  // If true, this file should not be included in minor compactions.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  // It's set whenever you get a Reader.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  private boolean excludeFromMinorCompaction = false;<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  // This file was product of these compacted store files<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  private final Set&lt;String&gt; compactedStoreFiles = new HashSet&lt;&gt;();<a name="line.187"></a>
+<span class="sourceLineNo">150</span>  // firstKey, lastkey and cellComparator will be set when openReader.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  private Optional&lt;Cell&gt; firstKey;<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private Optional&lt;Cell&gt; lastKey;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  private CellComparator comparator;<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public CacheConfig getCacheConf() {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    return cacheConf;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return firstKey;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return lastKey;<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>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public CellComparator getComparator() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return comparator;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public long getMaxMemStoreTS() {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return maxMemstoreTS;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  // If true, this file was product of a major compaction.  Its then set<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  // whenever you get a Reader.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  private AtomicBoolean majorCompaction = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  // If true, this file should not be included in minor compactions.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  // It's set whenever you get a Reader.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  private boolean excludeFromMinorCompaction = false;<a name="line.187"></a>
 <span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * Map of the metadata entries in the corresponding HFile. Populated when Reader is opened<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * after which it is not modified again.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  private Map&lt;byte[], byte[]&gt; metadataMap;<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>  // StoreFile.Reader<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  private volatile StoreFileReader reader;<a name="line.196"></a>
+<span class="sourceLineNo">189</span>  // This file was product of these compacted store files<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  private final Set&lt;String&gt; compactedStoreFiles = new HashSet&lt;&gt;();<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  /**<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * Map of the metadata entries in the corresponding HFile. Populated when Reader is opened<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * after which it is not modified again.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private Map&lt;byte[], byte[]&gt; metadataMap;<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * Bloom filter type specified in column family configuration. Does not<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * necessarily correspond to the Bloom filter type present in the HFile.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private final BloomType cfBloomType;<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * depending on the underlying files (10-20MB?).<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * @param fs The current file system to use.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * @param p The path of the file.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @param conf The current configuration.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param cfBloomType The bloom type to use for this store file as specified by column family<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   *          configuration. This may or may not be the same as the Bloom filter type actually<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   *          present in the HFile, because column family configuration might change. If this is<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *          {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public HStoreFile(FileSystem fs, Path p, Configuration conf, CacheConfig cacheConf,<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      BloomType cfBloomType, boolean primaryReplica) throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this(fs, new StoreFileInfo(conf, fs, p), conf, cacheConf, cfBloomType, primaryReplica);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * depending on the underlying files (10-20MB?).<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param fs fs The current file system to use.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param fileInfo The store file information.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @param conf The current configuration.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param cfBloomType The bloom type to use for this store file as specified by column<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   *          family configuration. This may or may not be the same as the Bloom filter type<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   *          actually present in the HFile, because column family configuration might change. If<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   *          this is {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public HStoreFile(FileSystem fs, StoreFileInfo fileInfo, Configuration conf, CacheConfig cacheConf,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      BloomType cfBloomType, boolean primaryReplica) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    this.fs = fs;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    this.fileInfo = fileInfo;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    this.cacheConf = cacheConf;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    this.noReadahead =<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        conf.getBoolean(STORE_FILE_READER_NO_READAHEAD, DEFAULT_STORE_FILE_READER_NO_READAHEAD);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.cfBloomType = cfBloomType;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } else {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      LOG.info("Ignoring bloom filter check for file " + this.getPath() + ": " + "cfBloomType=" +<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          cfBloomType + " (disabled in config)");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      this.cfBloomType = BloomType.NONE;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    this.primaryReplica = primaryReplica;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @return the StoreFile object associated to this StoreFile. null if the StoreFile is not a<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   *         reference.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public StoreFileInfo getFileInfo() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    return this.fileInfo;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public Path getPath() {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    return this.fileInfo.getPath();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
-<span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>  @Override<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  public Path getQualifiedPath() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    return this.fileInfo.getPath().makeQualified(fs.getUri(), fs.getWorkingDirectory());<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  @Override<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  public boolean isReference() {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    return this.fileInfo.isReference();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  @Override<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public boolean isHFile() {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    return StoreFileInfo.isHFile(this.fileInfo.getPath());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>  @Override<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public boolean isMajorCompactionResult() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    if (this.majorCompaction == null) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      throw new NullPointerException("This has not been set yet");<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    return this.majorCompaction.get();<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public boolean excludeFromMinorCompaction() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return this.excludeFromMinorCompaction;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public long getMaxSequenceId() {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    return this.sequenceid;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  public long getModificationTimestamp() throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    return fileInfo.getModificationTime();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * Only used by the Striped Compaction Policy<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * @param key<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @return value associated with the metadata key<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public byte[] getMetadataValue(byte[] key) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    return metadataMap.get(key);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  @Override<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  public boolean isBulkLoadResult() {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    boolean bulkLoadedHFile = false;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    String fileName = this.getPath().getName();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    int startPos = fileName.indexOf("SeqId_");<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    if (startPos != -1) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      bulkLoadedHFile = true;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    return bulkLoadedHFile || (metadataMap != null &amp;&amp; metadataMap.containsKey(BULKLOAD_TIME_KEY));<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public boolean isCompactedAway() {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    return compactedAway;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  @VisibleForTesting<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public int getRefCount() {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    return refCount.get();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return true if the file is still used in reads<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public boolean isReferencedInReads() {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    int rc = refCount.get();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    assert rc &gt;= 0; // we should not go negative.<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return rc &gt; 0;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  @Override<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public OptionalLong getBulkLoadTimestamp() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    byte[] bulkLoadTimestamp = metadataMap.get(BULKLOAD_TIME_KEY);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return bulkLoadTimestamp == null ? OptionalLong.empty()<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        : OptionalLong.of(Bytes.toLong(bulkLoadTimestamp));<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @return the cached value of HDFS blocks distribution. The cached value is calculated when store<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   *         file is opened.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public HDFSBlocksDistribution getHDFSBlockDistribution() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    return this.fileInfo.getHDFSBlockDistribution();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * Opens reader on this store file. Called by Constructor.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @see #closeStoreFile(boolean)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private void open() throws IOException {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    if (this.reader != null) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      throw new IllegalAccessError("Already open");<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // Open the StoreFile.Reader<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    this.reader = fileInfo.open(this.fs, this.cacheConf, false, noReadahead ? 0L : -1L,<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      primaryReplica, refCount, true);<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // Load up indices and fileinfo. This also loads Bloom filter type.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // Read in our metadata.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    byte [] b = metadataMap.get(MAX_SEQ_ID_KEY);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    if (b != null) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      // By convention, if halfhfile, top half has a sequence number &gt; bottom<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // half. Thats why we add one in below. Its done for case the two halves<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // are ever merged back together --rare.  Without it, on open of store,<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      // since store files are distinguished by sequence id, the one half would<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // subsume the other.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      this.sequenceid = Bytes.toLong(b);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      if (fileInfo.isTopReference()) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        this.sequenceid += 1;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    if (isBulkLoadResult()){<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // generate the sequenceId from the fileName<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      // fileName is of the form &lt;randomName&gt;_SeqId_&lt;id-when-loaded&gt;_<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      String fileName = this.getPath().getName();<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // Use lastIndexOf() to get the last, most recent bulk load seqId.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      int startPos = fileName.lastIndexOf("SeqId_");<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      if (startPos != -1) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        this.sequenceid = Long.parseLong(fileName.substring(startPos + 6,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            fileName.indexOf('_', startPos + 6)));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        // Handle reference files as done above.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        if (fileInfo.isTopReference()) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          this.sequenceid += 1;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      // SKIP_RESET_SEQ_ID only works in bulk loaded file.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // In mob compaction, the hfile where the cells contain the path of a new mob file is bulk<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      // loaded to hbase, these cells have the same seqIds with the old ones. We do not want<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      // to reset new seqIds for them since this might make a mess of the visibility of cells that<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      // have the same row key but different seqIds.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      boolean skipResetSeqId = isSkipResetSeqId(metadataMap.get(SKIP_RESET_SEQ_ID));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      if (skipResetSeqId) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        // increase the seqId when it is a bulk loaded file from mob compaction.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        this.sequenceid += 1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      this.reader.setSkipResetSeqId(skipResetSeqId);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      this.reader.setBulkLoaded(true);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    this.reader.setSequenceID(this.sequenceid);<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    b = metadataMap.get(HFile.Writer.MAX_MEMSTORE_TS_KEY);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (b != null) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      this.maxMemstoreTS = Bytes.toLong(b);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>    b = metadataMap.get(MAJOR_COMPACTION_KEY);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    if (b != null) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      boolean mc = Bytes.toBoolean(b);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      if (this.majorCompaction == null) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        this.majorCompaction = new AtomicBoolean(mc);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        this.majorCompaction.set(mc);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    } else {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      // Presume it is not major compacted if it doesn't explicity say so<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      // HFileOutputFormat explicitly sets the major compacted key.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      this.majorCompaction = new AtomicBoolean(false);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    b = metadataMap.get(EXCLUDE_FROM_MINOR_COMPACTION_KEY);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    this.excludeFromMinorCompaction = (b != null &amp;&amp; Bytes.toBoolean(b));<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>    BloomType hfileBloomType = reader.getBloomFilterType();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    if (cfBloomType != BloomType.NONE) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      reader.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      if (hfileBloomType != cfBloomType) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.info("HFile Bloom filter type for "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            + reader.getHFileReader().getName() + ": " + hfileBloomType<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            + ", but " + cfBloomType + " specified in column family "<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            + "configuration");<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    } else if (hfileBloomType != BloomType.NONE) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      LOG.info("Bloom filter turned off by CF config for "<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          + reader.getHFileReader().getName());<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // load delete family bloom filter<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    reader.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    try {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      byte[] data = metadataMap.get(TIMERANGE_KEY);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      this.reader.timeRange = data == null ? null : TimeRangeTracker.parseFrom(data).toTimeRange();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    } catch (IllegalArgumentException e) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      LOG.error("Error reading timestamp range data from meta -- " +<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          "proceeding without", e);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      this.reader.timeRange = null;<a name="line.461"></a>
+<span class="sourceLineNo">198</span>  // StoreFile.Reader<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private volatile StoreFileReader reader;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>  /**<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * Bloom filter type specified in column family configuration. Does not<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * necessarily correspond to the Bloom filter type present in the HFile.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  private final BloomType cfBloomType;<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  /**<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   * depending on the underlying files (10-20MB?).<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * @param fs The current file system to use.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * @param p The path of the file.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @param conf The current configuration.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param cfBloomType The bloom type to use for this store file as specified by column family<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   *          configuration. This may or may not be the same as the Bloom filter type actually<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   *          present in the HFile, because column family configuration might change. If this is<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   *          {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @throws IOException<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public HStoreFile(FileSystem fs, Path p, Configuration conf, CacheConfig cacheConf,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      BloomType cfBloomType, boolean primaryReplica) throws IOException {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    this(fs, new StoreFileInfo(conf, fs, p), conf, cacheConf, cfBloomType, primaryReplica);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * depending on the underlying files (10-20MB?).<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param fs fs The current file system to use.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param fileInfo The store file information.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param conf The current configuration.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @param cfBloomType The bloom type to use for this store file as specified by column<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   *          family configuration. This may or may not be the same as the Bloom filter type<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   *          actually present in the HFile, because column family configuration might change. If<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   *          this is {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public HStoreFile(FileSystem fs, StoreFileInfo fileInfo, Configuration conf, CacheConfig cacheConf,<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      BloomType cfBloomType, boolean primaryReplica) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    this.fs = fs;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    this.fileInfo = fileInfo;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    this.cacheConf = cacheConf;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    this.noReadahead =<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        conf.getBoolean(STORE_FILE_READER_NO_READAHEAD, DEFAULT_STORE_FILE_READER_NO_READAHEAD);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    if (BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      this.cfBloomType = cfBloomType;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } else {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      LOG.info("Ignoring bloom filter check for file " + this.getPath() + ": " + "cfBloomType=" +<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          cfBloomType + " (disabled in config)");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      this.cfBloomType = BloomType.NONE;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    this.primaryReplica = primaryReplica;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return the StoreFile object associated to this StoreFile. null if the StoreFile is not a<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   *         reference.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public StoreFileInfo getFileInfo() {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return this.fileInfo;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @Override<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  public Path getPath() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    return this.fileInfo.getPath();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  public Path getEncodedPath() {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    try {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      return new Path(URLEncoder.encode(fileInfo.getPath().toString(), HConstants.UTF8_ENCODING));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    } catch (UnsupportedEncodingException ex) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("URLEncoder doesn't support UTF-8", ex);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Override<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public Path getQualifiedPath() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    return this.fileInfo.getPath().makeQualified(fs.getUri(), fs.getWorkingDirectory());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public boolean isReference() {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return this.fileInfo.isReference();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  public boolean isHFile() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    return StoreFileInfo.isHFile(this.fileInfo.getPath());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  public boolean isMajorCompactionResult() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    if (this.majorCompaction == null) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      throw new NullPointerException("This has not been set yet");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return this.majorCompaction.get();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  @Override<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public boolean excludeFromMinorCompaction() {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return this.excludeFromMinorCompaction;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>  @Override<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public long getMaxSequenceId() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return this.sequenceid;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public long getModificationTimestamp() throws IOException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    return fileInfo.getModificationTime();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * Only used by the Striped Compaction Policy<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param key<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return value associated with the metadata key<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public byte[] getMetadataValue(byte[] key) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    return metadataMap.get(key);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  @Override<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  public boolean isBulkLoadResult() {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    boolean bulkLoadedHFile = false;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    String fileName = this.getPath().getName();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    int startPos = fileName.indexOf("SeqId_");<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    if (startPos != -1) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      bulkLoadedHFile = true;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    return bulkLoadedHFile || (metadataMap != null &amp;&amp; metadataMap.containsKey(BULKLOAD_TIME_KEY));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  public boolean isCompactedAway() {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    return compactedAway;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  @VisibleForTesting<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public int getRefCount() {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    return refCount.get();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if the file is still used in reads<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public boolean isReferencedInReads() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    int rc = refCount.get();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    assert rc &gt;= 0; // we should not go negative.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return rc &gt; 0;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public OptionalLong getBulkLoadTimestamp() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    byte[] bulkLoadTimestamp = metadataMap.get(BULKLOAD_TIME_KEY);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return bulkLoadTimestamp == null ? OptionalLong.empty()<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        : OptionalLong.of(Bytes.toLong(bulkLoadTimestamp));<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * @return the cached value of HDFS blocks distribution. The cached value is calculated when store<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   *         file is opened.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  public HDFSBlocksDistribution getHDFSBlockDistribution() {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    return this.fileInfo.getHDFSBlockDistribution();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>  /**<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   * Opens reader on this store file. Called by Constructor.<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * @see #closeStoreFile(boolean)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  private void open() throws IOException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    if (this.reader != null) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      throw new IllegalAccessError("Already open");<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    // Open the StoreFile.Reader<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    this.reader = fileInfo.open(this.fs, this.cacheConf, false, noReadahead ? 0L : -1L,<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      primaryReplica, refCount, true);<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    // Load up indices and fileinfo. This also loads Bloom filter type.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    // Read in our metadata.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    byte [] b = metadataMap.get(MAX_SEQ_ID_KEY);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    if (b != null) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // By convention, if halfhfile, top half has a sequence number &gt; bottom<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // half. Thats why we add one in below. Its done for case the two halves<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      // are ever merged back together --rare.  Without it, on open of store,<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // since store files are distinguished by sequence id, the one half would<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // subsume the other.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      this.sequenceid = Bytes.toLong(b);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (fileInfo.isTopReference()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        this.sequenceid += 1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>    if (isBulkLoadResult()){<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // generate the sequenceId from the fileName<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      // fileName is of the form &lt;randomName&gt;_SeqId_&lt;id-when-loaded&gt;_<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      String fileName = this.getPath().getName();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      // Use lastIndexOf() to get the last, most recent bulk load seqId.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      int startPos = fileName.lastIndexOf("SeqId_");<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      if (startPos != -1) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        this.sequenceid = Long.parseLong(fileName.substring(startPos + 6,<a name="line.406"></a>
+<span class="sourceLineNo">407</span>            fileName.indexOf('_', startPos + 6)));<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // Handle reference files as done above.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        if (fileInfo.isTopReference()) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          this.sequenceid += 1;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      // SKIP_RESET_SEQ_ID only works in bulk loaded file.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      // In mob compaction, the hfile where the cells contain the path of a new mob file is bulk<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // loaded to hbase, these cells have the same seqIds with the old ones. We do not want<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      // to reset new seqIds for them since this might make a mess of the visibility of cells that<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      // have the same row key but different seqIds.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      boolean skipResetSeqId = isSkipResetSeqId(metadataMap.get(SKIP_RESET_SEQ_ID));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      if (skipResetSeqId) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // increase the seqId when it is a bulk loaded file from mob compaction.<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        this.sequenceid += 1;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      this.reader.setSkipResetSeqId(skipResetSeqId);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      this.reader.setBulkLoaded(true);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    this.reader.setSequenceID(this.sequenceid);<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>    b = metadataMap.get(HFile.Writer.MAX_MEMSTORE_TS_KEY);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (b != null) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      this.maxMemstoreTS = Bytes.toLong(b);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>    b = metadataMap.get(MAJOR_COMPACTION_KEY);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    if (b != null) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      boolean mc = Bytes.toBoolean(b);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (this.majorCompaction == null) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        this.majorCompaction = new AtomicBoolean(mc);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        this.majorCompaction.set(mc);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // Presume it is not major compacted if it doesn't explicity say so<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      // HFileOutputFormat explicitly sets the major compacted key.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      this.majorCompaction = new AtomicBoolean(false);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    b = metadataMap.get(EXCLUDE_FROM_MINOR_COMPACTION_KEY);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    this.excludeFromMinorCompaction = (b != null &amp;&amp; Bytes.toBoolean(b));<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    BloomType hfileBloomType = reader.getBloomFilterType();<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    if (cfBloomType != BloomType.NONE) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      reader.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (hfileBloomType != cfBloomType) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        LOG.info("HFile Bloom filter type for "<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            + reader.getHFileReader().getName() + ": " + hfileBloomType<a name="line.455"></a>
+<span class="sourceLineNo">456</span>            + ", but " + cfBloomType + " specified in column family "<a name="line.456"></a>
+<span class="sourceLineNo">457</span>            + "configuration");<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      }<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    } else if (hfileBloomType != BloomType.NONE) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      LOG.info("Bloom filter turned off by CF config for "<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          + reader.getHFileReader().getName());<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>    try {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      byte[] data = metadataMap.get(COMPACTION_EVENT_KEY);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      this.compactedStoreFiles.addAll(ProtobufUtil.toCompactedStoreFiles(data));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    } catch (IOException e) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      LOG.error("Error reading compacted storefiles from meta data", e);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    // initialize so we can reuse them after reader closed.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    firstKey = reader.getFirstKey();<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    lastKey = reader.getLastKey();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    comparator = reader.getComparator();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  /**<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Initialize the reader used for pread.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void initReader() throws IOException {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    if (reader == null) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      try {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        open();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      } catch (Exception e) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        try {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>          boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          this.closeStoreFile(evictOnClose);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        } catch (IOException ee) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          LOG.warn("failed to close reader", ee);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        }<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        throw e;<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      }<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>  private StoreFileReader createStreamReader(boolean canUseDropBehind) throws IOException {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    initReader();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    StoreFileReader reader = fileInfo.open(this.fs, this.cacheConf, canUseDropBehind, -1L,<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      primaryReplica, refCount, false);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    reader.copyFields(this.reader);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    return reader;<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>  /**<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * Get a scanner which uses pread.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * &lt;p&gt;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Must be called after initReader.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public StoreFileScanner getPreadScanner(boolean cacheBlocks, long readPt, long scannerOrder,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      boolean canOptimizeForNonNullColumn) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    return getReader().getStoreFileScanner(cacheBlocks, true, false, readPt, scannerOrder,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      canOptimizeForNonNullColumn);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<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>   * Get a scanner which uses streaming read.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * &lt;p&gt;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * Must be called after initReader.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   */<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  public StoreFileScanner getStreamScanner(boolean canUseDropBehind, boolean cacheBlocks,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn)<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      throws IOException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    return createStreamReader(canUseDropBehind)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        .getStoreFileScanner(cacheBlocks, false, isCompaction, readPt, scannerOrder,<a name="line.524"></a>
-<span class="sourceLineNo">525</span>            canOptimizeForNonNullColumn);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /**<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * @return Current reader. Must call initReader first else returns null.<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * @see #initReader()<a name="line.530"></a>
+<span class="sourceLineNo">464</span>    // load delete family bloom filter<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    reader.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    try {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      byte[] data = metadataMap.get(TIMERANGE_KEY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      this.reader.timeRange = data == null ? null : TimeRangeTracker.parseFrom(data).toTimeRange();<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    } catch (IllegalArgumentException e) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      LOG.error("Error reading timestamp range data from meta -- " +<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          "proceeding without", e);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      this.reader.timeRange = null;<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>    try {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      byte[] data = metadataMap.get(COMPACTION_EVENT_KEY);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      this.compactedStoreFiles.addAll(ProtobufUtil.toCompactedStoreFiles(data));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    } catch (IOException e) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      LOG.error("Error reading compacted storefiles from meta data", e);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>    // initialize so we can reuse them after reader closed.<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    firstKey = reader.getFirstKey();<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    lastKey = reader.getLastKey();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    comparator = reader.getComparator();<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>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Initialize the reader used for pread.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
+<span class="sourceLineNo">492</span>  public void initReader() throws IOException {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (reader == null) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      try {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>        open();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      } catch (Exception e) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        try {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>          boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>          this.closeStoreFile(evictOnClose);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        } catch (IOException ee) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>          LOG.warn("failed to close reader", ee);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        }<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        throw e;<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      }<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    }<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  private StoreFileReader createStreamReader(boolean canUseDropBehind) throws IOException {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    initReader();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    StoreFileReader reader = fileInfo.open(this.fs, this.cacheConf, canUseDropBehind, -1L,<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      primaryReplica, refCount, false);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    reader.copyFields(this.reader);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return reader;<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>  /**<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * Get a scanner which uses pread.<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   * &lt;p&gt;<a name="line.518"></a>
+<span class="sourceLineNo">519</span>   * Must be called after initReader.<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  public StoreFileScanner getPreadScanner(boolean cacheBlocks, long readPt, long scannerOrder,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      boolean canOptimizeForNonNullColumn) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    return getReader().getStoreFileScanner(cacheBlocks, true, false, readPt, scannerOrder,<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      canOptimizeForNonNullColumn);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>  /**<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * Get a scanner which uses streaming read.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * &lt;p&gt;<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * Must be called after initReader.<a name="line.530"></a>
 <span class="sourceLineNo">531</span>   */<a name="line.531"></a>
-<span class="sourceLineNo">532</span>  public StoreFileReader getReader() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    return this.reader;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @param evictOnClose whether to evict blocks belonging to this file<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @throws IOException<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  public synchronized void closeStoreFile(boolean evictOnClose) throws IOException {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if (this.reader != null) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.reader.close(evictOnClose);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      this.reader = null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Delete this file<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @throws IOException<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public void deleteStoreFile() throws IOException {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    closeStoreFile(evictOnClose);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this.fs.delete(getPath(), true);<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>  public void markCompactedAway() {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    this.compactedAway = true;<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  public String toString() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return this.fileInfo.toString();<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  @Override<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public String toStringDetailed() {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    StringBuilder sb = new StringBuilder();<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    sb.append(this.getPath().toString());<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    sb.append(", isReference=").append(isReference());<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    sb.append(", isBulkLoadResult=").append(isBulkLoadResult());<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    if (isBulkLoadResult()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      sb.append(", bulkLoadTS=");<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      OptionalLong bulkLoadTS = getBulkLoadTimestamp();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      if (bulkLoadTS.isPresent()) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        sb.append(bulkLoadTS.getAsLong());<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      } else {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        sb.append("NotPresent");<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    } else {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      sb.append(", seqid=").append(getMaxSequenceId());<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    sb.append(", majorCompaction=").append(isMajorCompactionResult());<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>    return sb.toString();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  }<a name="line.586"></a>
-<span class="sourceLineNo">587</span><a name="line.587"></a>
-<span class="sourceLineNo">588</span>  /**<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * Gets whether to skip resetting the sequence id for cells.<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param skipResetSeqId The byte array of boolean.<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return Whether to skip resetting the sequence id.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  private boolean isSkipResetSeqId(byte[] skipResetSeqId) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (skipResetSeqId != null &amp;&amp; skipResetSeqId.length == 1) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return Bytes.toBoolean(skipResetSeqId);<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    return false;<a name="line.597"></a>
+<span class="sourceLineNo">532</span>  public StoreFileScanner getStreamScanner(boolean canUseDropBehind, boolean cacheBlocks,<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn)<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      throws IOException {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    return createStreamReader(canUseDropBehind)<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        .getStoreFileScanner(cacheBlocks, false, isCompaction, readPt, scannerOrder,<a name="line.536"></a>
+<span class="sourceLineNo">537</span>            canOptimizeForNonNullColumn);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>  /**<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * @return Current reader. Must call initReader first else returns null.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @see #initReader()<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   */<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public StoreFileReader getReader() {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    return this.reader;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param evictOnClose whether to evict blocks belonging to this file<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @throws IOException<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   */<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  public synchronized void closeStoreFile(boolean evictOnClose) throws IOException {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    if (this.reader != null) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      this.reader.close(evictOnClose);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      this.reader = null;<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Delete this file<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @throws IOException<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
+<span class="sourceLineNo">563</span>  public void deleteStoreFile() throws IOException {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    closeStoreFile(evictOnClose);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    this.fs.delete(getPath(), true);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  public void markCompactedAway() {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    this.compactedAway = true;<a name="line.570"></a>
+<span class="sourceLineNo">571</span>  }<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>  @Override<a name="line.573"></a>
+<span class="sourceLineNo">574</span>  public String toString() {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    return this.fileInfo.toString();<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>  @Override<a name="line.578"></a>
+<span class="sourceLineNo">579</span>  public String toStringDetailed() {<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    StringBuilder sb = new StringBuilder();<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    sb.append(this.getPath().toString());<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    sb.append(", isReference=").append(isReference());<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    sb.append(", isBulkLoadResult=").append(isBulkLoadResult());<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    if (isBulkLoadResult()) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      sb.append(", bulkLoadTS=");<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      OptionalLong bulkLoadTS = getBulkLoadTimestamp();<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      if (bulkLoadTS.isPresent()) {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>        sb.append(bulkLoadTS.getAsLong());<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      } else {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>        sb.append("NotPresent");<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    } else {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      sb.append(", seqid=").append(getMaxSequenceId());<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    sb.append(", majorCompaction=").append(isMajorCompactionResult());<a name="line.595"></a>
+<span class="sourceLineNo">596</span><a name="line.596"></a>
+<span class="sourceLineNo">597</span>    return sb.toString();<a name="line.597"></a>
 <span class="sourceLineNo">598</span>  }<a name="line.598"></a>
 <span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>  @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  public OptionalLong getMinimumTimestamp() {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    TimeRange tr = getReader().timeRange;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    return tr != null ? OptionalLong.of(tr.getMin()) : OptionalLong.empty();<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>  @Override<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  public OptionalLong getMaximumTimestamp() {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    TimeRange tr = getReader().timeRange;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    return tr != null ? OptionalLong.of(tr.getMax()) : OptionalLong.empty();<a name="line.609"></a>
+<span class="sourceLineNo">600</span>  /**<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * Gets whether to skip resetting the sequence id for cells.<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param skipResetSeqId The byte array of boolean.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @return Whether to skip resetting the sequence id.<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   */<a name="line.604"></a>
+<span class="sourceLineNo">605</span>  private boolean isSkipResetSeqId(byte[] skipResetSeqId) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    if (skipResetSeqId != null &amp;&amp; skipResetSeqId.length == 1) {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      return Bytes.toBoolean(skipResetSeqId);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    }<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    return false;<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>  Set&lt;String&gt; getCompactedStoreFiles() {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    return Collections.unmodifiableSet(this.compactedStoreFiles);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  }<a name="line.614"></a>
-<span class="sourceLineNo">615</span>}<a name="line.615"></a>
+<span class="sourceLineNo">612</span>  @Override<a name="line.612"></a>
+<span class="sourceLineNo">613</span>  public OptionalLong getMinimumTimestamp() {<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    TimeRange tr = getReader().timeRange;<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    return tr != null ? OptionalLong.of(tr.getMin()) : OptionalLong.empty();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>  @Override<a name="line.618"></a>
+<span class="sourceLineNo">619</span>  public OptionalLong getMaximumTimestamp() {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    TimeRange tr = getReader().timeRange;<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    return tr != null ? OptionalLong.of(tr.getMax()) : OptionalLong.empty();<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  Set&lt;String&gt; getCompactedStoreFiles() {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    return Collections.unmodifiableSet(this.compactedStoreFiles);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>  }<a name="line.626"></a>
+<span class="sourceLineNo">627</span>}<a name="line.627"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.SecureBulkLoadListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.SecureBulkLoadListener.html
index 48d8401..614d361 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.SecureBulkLoadListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.SecureBulkLoadListener.html
@@ -51,8 +51,8 @@
 <span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.security.User;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.44"></a>
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.token.FsDelegationToken;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.token.TokenUtil;<a name="line.47"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.token.ClientTokenUtil;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.token.FsDelegationToken;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.FSHDFSUtils;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.50"></a>
@@ -239,7 +239,7 @@
 <span class="sourceLineNo">231</span>    final UserGroupInformation ugi = user.getUGI();<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    if (userProvider.isHadoopSecurityEnabled()) {<a name="line.232"></a>
 <span class="sourceLineNo">233</span>      try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        Token&lt;AuthenticationTokenIdentifier&gt; tok = TokenUtil.obtainToken(conn).get();<a name="line.234"></a>
+<span class="sourceLineNo">234</span>        Token&lt;AuthenticationTokenIdentifier&gt; tok = ClientTokenUtil.obtainToken(conn).get();<a name="line.234"></a>
 <span class="sourceLineNo">235</span>        if (tok != null) {<a name="line.235"></a>
 <span class="sourceLineNo">236</span>          boolean b = ugi.addToken(tok);<a name="line.236"></a>
 <span class="sourceLineNo">237</span>          LOG.debug("token added " + tok + " for user " + ugi + " return=" + b);<a name="line.237"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.html
index 48d8401..614d361 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.html
@@ -51,8 +51,8 @@
 <span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.security.User;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.44"></a>
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.token.FsDelegationToken;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.token.TokenUtil;<a name="line.47"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.token.ClientTokenUtil;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.token.FsDelegationToken;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.FSHDFSUtils;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.50"></a>
@@ -239,7 +239,7 @@
 <span class="sourceLineNo">231</span>    final UserGroupInformation ugi = user.getUGI();<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    if (userProvider.isHadoopSecurityEnabled()) {<a name="line.232"></a>
 <span class="sourceLineNo">233</span>      try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        Token&lt;AuthenticationTokenIdentifier&gt; tok = TokenUtil.obtainToken(conn).get();<a name="line.234"></a>
+<span class="sourceLineNo">234</span>        Token&lt;AuthenticationTokenIdentifier&gt; tok = ClientTokenUtil.obtainToken(conn).get();<a name="line.234"></a>
 <span class="sourceLineNo">235</span>        if (tok != null) {<a name="line.235"></a>
 <span class="sourceLineNo">236</span>          boolean b = ugi.addToken(tok);<a name="line.236"></a>
 <span class="sourceLineNo">237</span>          LOG.debug("token added " + tok + " for user " + ugi + " return=" + b);<a name="line.237"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html
index 3e08728..21d12ce 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFile.html
@@ -74,71 +74,76 @@
 <span class="sourceLineNo">066</span>  Path getPath();<a name="line.66"></a>
 <span class="sourceLineNo">067</span><a name="line.67"></a>
 <span class="sourceLineNo">068</span>  /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * @return Returns the qualified path of this StoreFile<a name="line.69"></a>
+<span class="sourceLineNo">069</span>   * @return Encoded Path if this StoreFile was made with a Stream.<a name="line.69"></a>
 <span class="sourceLineNo">070</span>   */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  Path getQualifiedPath();<a name="line.71"></a>
+<span class="sourceLineNo">071</span>  Path getEncodedPath();<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>   * @return True if this is a StoreFile Reference.<a name="line.74"></a>
+<span class="sourceLineNo">074</span>   * @return Returns the qualified path of this StoreFile<a name="line.74"></a>
 <span class="sourceLineNo">075</span>   */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  boolean isReference();<a name="line.76"></a>
+<span class="sourceLineNo">076</span>  Path getQualifiedPath();<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
 <span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @return True if this is HFile.<a name="line.79"></a>
+<span class="sourceLineNo">079</span>   * @return True if this is a StoreFile Reference.<a name="line.79"></a>
 <span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  boolean isHFile();<a name="line.81"></a>
+<span class="sourceLineNo">081</span>  boolean isReference();<a name="line.81"></a>
 <span class="sourceLineNo">082</span><a name="line.82"></a>
 <span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * @return True if this file was made by a major compaction.<a name="line.84"></a>
+<span class="sourceLineNo">084</span>   * @return True if this is HFile.<a name="line.84"></a>
 <span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  boolean isMajorCompactionResult();<a name="line.86"></a>
+<span class="sourceLineNo">086</span>  boolean isHFile();<a name="line.86"></a>
 <span class="sourceLineNo">087</span><a name="line.87"></a>
 <span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @return True if this file should not be part of a minor compaction.<a name="line.89"></a>
+<span class="sourceLineNo">089</span>   * @return True if this file was made by a major compaction.<a name="line.89"></a>
 <span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  boolean excludeFromMinorCompaction();<a name="line.91"></a>
+<span class="sourceLineNo">091</span>  boolean isMajorCompactionResult();<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 This files maximum edit sequence id.<a name="line.94"></a>
+<span class="sourceLineNo">094</span>   * @return True if this file should not be part of a minor compaction.<a name="line.94"></a>
 <span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  long getMaxSequenceId();<a name="line.96"></a>
+<span class="sourceLineNo">096</span>  boolean excludeFromMinorCompaction();<a name="line.96"></a>
 <span class="sourceLineNo">097</span><a name="line.97"></a>
 <span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Get the modification time of this store file. Usually will access the file system so throws<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * IOException.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  long getModificationTimestamp() throws IOException;<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * Check if this storefile was created by bulk load. When a hfile is bulk loaded into HBase, we<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * append {@code '_SeqId_&lt;id-when-loaded&gt;'} to the hfile name, unless<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * "hbase.mapreduce.bulkload.assign.sequenceNumbers" is explicitly turned off. If<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * "hbase.mapreduce.bulkload.assign.sequenceNumbers" is turned off, fall back to<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * BULKLOAD_TIME_KEY.<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * @return true if this storefile was created by bulk load.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  boolean isBulkLoadResult();<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * Return the timestamp at which this bulk load file was generated.<a name="line.115"></a>
+<span class="sourceLineNo">099</span>   * @return This files maximum edit sequence id.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  long getMaxSequenceId();<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * Get the modification time of this store file. Usually will access the file system so throws<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * IOException.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  long getModificationTimestamp() throws IOException;<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>   * Check if this storefile was created by bulk load. When a hfile is bulk loaded into HBase, we<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * append {@code '_SeqId_&lt;id-when-loaded&gt;'} to the hfile name, unless<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * "hbase.mapreduce.bulkload.assign.sequenceNumbers" is explicitly turned off. If<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * "hbase.mapreduce.bulkload.assign.sequenceNumbers" is turned off, fall back to<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * BULKLOAD_TIME_KEY.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @return true if this storefile was created by bulk load.<a name="line.115"></a>
 <span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  OptionalLong getBulkLoadTimestamp();<a name="line.117"></a>
+<span class="sourceLineNo">117</span>  boolean isBulkLoadResult();<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 a length description of this StoreFile, suitable for debug output<a name="line.120"></a>
+<span class="sourceLineNo">120</span>   * Return the timestamp at which this bulk load file was generated.<a name="line.120"></a>
 <span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  String toStringDetailed();<a name="line.122"></a>
+<span class="sourceLineNo">122</span>  OptionalLong getBulkLoadTimestamp();<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>   * Get the min timestamp of all the cells in the store file.<a name="line.125"></a>
+<span class="sourceLineNo">125</span>   * @return a length description of this StoreFile, suitable for debug output<a name="line.125"></a>
 <span class="sourceLineNo">126</span>   */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  OptionalLong getMinimumTimestamp();<a name="line.127"></a>
+<span class="sourceLineNo">127</span>  String toStringDetailed();<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
 <span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * Get the max timestamp of all the cells in the store file.<a name="line.130"></a>
+<span class="sourceLineNo">130</span>   * Get the min timestamp of all the cells in the store file.<a name="line.130"></a>
 <span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  OptionalLong getMaximumTimestamp();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>}<a name="line.133"></a>
+<span class="sourceLineNo">132</span>  OptionalLong getMinimumTimestamp();<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * Get the max timestamp of all the cells in the store file.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  OptionalLong getMaximumTimestamp();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>}<a name="line.138"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html
new file mode 100644
index 0000000..267c708
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/token/ClientTokenUtil.html
@@ -0,0 +1,273 @@
+<!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><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.security.token;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import com.google.protobuf.ByteString;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import com.google.protobuf.ServiceException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.lang.reflect.UndeclaredThrowableException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.security.PrivilegedExceptionAction;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.concurrent.CompletableFuture;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HConstants;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.TableName;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.AsyncConnection;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.AsyncTable;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Table;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.security.User;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.io.Text;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.security.token.Token;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * Utility methods for obtaining authentication tokens, that do not require hbase-server.<a name="line.45"></a>
+<span class="sourceLineNo">046</span> */<a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.Public<a name="line.47"></a>
+<span class="sourceLineNo">048</span>public final class ClientTokenUtil {<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final Logger LOG = LoggerFactory.getLogger(ClientTokenUtil.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  // Set in TestClientTokenUtil via reflection<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static ServiceException injectedException;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private ClientTokenUtil() {}<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static void injectFault() throws ServiceException {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    if (injectedException != null) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      throw injectedException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    }<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>  /**<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * Obtain and return an authentication token for the current user.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @param conn The async HBase cluster connection<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @return the authentication token instance, wrapped by a {@link CompletableFuture}.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @InterfaceAudience.Private<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static CompletableFuture&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt; obtainToken(<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      AsyncConnection conn) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    CompletableFuture&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    if (injectedException != null) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      future.completeExceptionally(injectedException);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      return future;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    AsyncTable&lt;?&gt; table = conn.getTable(TableName.META_TABLE_NAME);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    table.&lt;AuthenticationProtos.AuthenticationService.Interface,<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        AuthenticationProtos.GetAuthenticationTokenResponse&gt; coprocessorService(<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      AuthenticationProtos.AuthenticationService::newStub,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>          (s, c, r) -&gt; s.getAuthenticationToken(c,<a name="line.79"></a>
+<span class="sourceLineNo">080</span>              AuthenticationProtos.GetAuthenticationTokenRequest.getDefaultInstance(), r),<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      HConstants.EMPTY_START_ROW).whenComplete((resp, error) -&gt; {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        if (error != null) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          future.completeExceptionally(ProtobufUtil.handleRemoteException(error));<a name="line.83"></a>
+<span class="sourceLineNo">084</span>        } else {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>          future.complete(toToken(resp.getToken()));<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        }<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      });<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    return future;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * Obtain and return an authentication token for the current user.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @param conn The HBase cluster connection<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   * @throws IOException if a remote error or serialization problem occurs.<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   * @return the authentication token instance<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  @InterfaceAudience.Private<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  static Token&lt;AuthenticationTokenIdentifier&gt; obtainToken(<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      Connection conn) throws IOException {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    Table meta = null;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    try {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      injectFault();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>      meta = conn.getTable(TableName.META_TABLE_NAME);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      CoprocessorRpcChannel rpcChannel = meta.coprocessorService(<a name="line.105"></a>
+<span class="sourceLineNo">106</span>              HConstants.EMPTY_START_ROW);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      AuthenticationProtos.AuthenticationService.BlockingInterface service =<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          AuthenticationProtos.AuthenticationService.newBlockingStub(rpcChannel);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      AuthenticationProtos.GetAuthenticationTokenResponse response =<a name="line.109"></a>
+<span class="sourceLineNo">110</span>              service.getAuthenticationToken(null,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          AuthenticationProtos.GetAuthenticationTokenRequest.getDefaultInstance());<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>      return toToken(response.getToken());<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    } catch (ServiceException se) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      throw ProtobufUtil.handleRemoteException(se);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    } finally {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      if (meta != null) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        meta.close();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      }<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><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  /**<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * Converts a Token instance (with embedded identifier) to the protobuf representation.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   *<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @param token the Token instance to copy<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * @return the protobuf Token message<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @InterfaceAudience.Private<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  static AuthenticationProtos.Token toToken(Token&lt;AuthenticationTokenIdentifier&gt; token) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    AuthenticationProtos.Token.Builder builder = AuthenticationProtos.Token.newBuilder();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    builder.setIdentifier(ByteString.copyFrom(token.getIdentifier()));<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    builder.setPassword(ByteString.copyFrom(token.getPassword()));<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    if (token.getService() != null) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      builder.setService(ByteString.copyFromUtf8(token.getService().toString()));<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    return builder.build();<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>   * Converts a protobuf Token message back into a Token instance.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @param proto the protobuf Token message<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @return the Token instance<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  @InterfaceAudience.Private<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static Token&lt;AuthenticationTokenIdentifier&gt; toToken(AuthenticationProtos.Token proto) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    return new Token&lt;&gt;(<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        proto.hasIdentifier() ? proto.getIdentifier().toByteArray() : null,<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        proto.hasPassword() ? proto.getPassword().toByteArray() : null,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        AuthenticationTokenIdentifier.AUTH_TOKEN_TYPE,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        proto.hasService() ? new Text(proto.getService().toStringUtf8()) : null);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Obtain and return an authentication token for the given user.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @param conn The HBase cluster connection<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @param user The user to obtain a token for<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * @return the authentication token instance<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  @InterfaceAudience.Private<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  static Token&lt;AuthenticationTokenIdentifier&gt; obtainToken(<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      final Connection conn, User user) throws IOException, InterruptedException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    return user.runAs(new PrivilegedExceptionAction&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt;() {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      public Token&lt;AuthenticationTokenIdentifier&gt; run() throws Exception {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        return obtainToken(conn);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * Obtain an authentication token for the given user and add it to the<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * user's credentials.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param conn The HBase cluster connection<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param user The user for whom to obtain the token<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public static void obtainAndCacheToken(final Connection conn,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      User user)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      throws IOException, InterruptedException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      Token&lt;AuthenticationTokenIdentifier&gt; token = obtainToken(conn, user);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (token == null) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        throw new IOException("No token returned for user " + user.getName());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      if (LOG.isDebugEnabled()) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        LOG.debug("Obtained token " + token.getKind().toString() + " for user " +<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            user.getName());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      user.addToken(token);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } catch (IOException | InterruptedException | RuntimeException e) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      throw e;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    } catch (Exception e) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      throw new UndeclaredThrowableException(e,<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          "Unexpected exception obtaining token for user " + user.getName());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>}<a name="line.201"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenProvider.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenProvider.html
index 8fc4580..502b644 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenProvider.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenProvider.html
@@ -137,7 +137,7 @@
 <span class="sourceLineNo">129</span><a name="line.129"></a>
 <span class="sourceLineNo">130</span>      Token&lt;AuthenticationTokenIdentifier&gt; token =<a name="line.130"></a>
 <span class="sourceLineNo">131</span>          secretManager.generateToken(currentUser.getName());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      response.setToken(TokenUtil.toToken(token)).build();<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      response.setToken(ClientTokenUtil.toToken(token)).build();<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    } catch (IOException ioe) {<a name="line.133"></a>
 <span class="sourceLineNo">134</span>      CoprocessorRpcUtils.setControllerException(controller, ioe);<a name="line.134"></a>
 <span class="sourceLineNo">135</span>    }<a name="line.135"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html
index cf2e481..0a1c2e9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/token/TokenUtil.html
@@ -25,349 +25,261 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.security.token;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import com.google.protobuf.ByteString;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import com.google.protobuf.ServiceException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.lang.reflect.UndeclaredThrowableException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.security.PrivilegedExceptionAction;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.concurrent.CompletableFuture;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HConstants;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.TableName;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.AsyncConnection;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.AsyncTable;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Table;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.AuthenticationService;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.GetAuthenticationTokenRequest;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.GetAuthenticationTokenResponse;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.security.User;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.io.Text;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.mapred.JobConf;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.mapreduce.Job;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.security.token.Token;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.zookeeper.KeeperException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>/**<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * Utility methods for obtaining authentication tokens.<a name="line.53"></a>
-<span class="sourceLineNo">054</span> */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>@InterfaceAudience.Public<a name="line.55"></a>
-<span class="sourceLineNo">056</span>public class TokenUtil {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  // This class is referenced indirectly by User out in common; instances are created by reflection<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final Logger LOG = LoggerFactory.getLogger(TokenUtil.class);<a name="line.58"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.lang.reflect.UndeclaredThrowableException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.concurrent.CompletableFuture;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.client.AsyncConnection;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.security.User;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.io.Text;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.mapred.JobConf;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.mapreduce.Job;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.security.token.Token;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.zookeeper.KeeperException;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.slf4j.Logger;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.slf4j.LoggerFactory;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Utility methods for obtaining authentication tokens.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> */<a name="line.42"></a>
+<span class="sourceLineNo">043</span>@InterfaceAudience.Public<a name="line.43"></a>
+<span class="sourceLineNo">044</span>public class TokenUtil {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  // This class is referenced indirectly by User out in common; instances are created by reflection<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private static final Logger LOG = LoggerFactory.getLogger(TokenUtil.class);<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>     * See {@link ClientTokenUtil#obtainToken(org.apache.hadoop.hbase.client.AsyncConnection)}.<a name="line.49"></a>
+<span class="sourceLineNo">050</span>     * @deprecated External users should not use this method. Please post on<a name="line.50"></a>
+<span class="sourceLineNo">051</span>     *   the HBase dev mailing list if you need this method. Internal<a name="line.51"></a>
+<span class="sourceLineNo">052</span>     *   HBase code should use {@link ClientTokenUtil} instead.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>     */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  @Deprecated<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public static CompletableFuture&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt; obtainToken(<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      AsyncConnection conn) {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    return ClientTokenUtil.obtainToken(conn);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  }<a name="line.58"></a>
 <span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  // Set in TestTokenUtil via reflection<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static ServiceException injectedException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static void injectFault() throws ServiceException {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    if (injectedException != null) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      throw injectedException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    }<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  /**<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * Obtain and return an authentication token for the current user.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * @param conn The async HBase cluster connection<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   * @return the authentication token instance, wrapped by a {@link CompletableFuture}.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public static CompletableFuture&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt; obtainToken(<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      AsyncConnection conn) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    CompletableFuture&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt; future = new CompletableFuture&lt;&gt;();<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    if (injectedException != null) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      future.completeExceptionally(injectedException);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      return future;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    AsyncTable&lt;?&gt; table = conn.getTable(TableName.META_TABLE_NAME);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    table.&lt;AuthenticationService.Interface, GetAuthenticationTokenResponse&gt; coprocessorService(<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      AuthenticationProtos.AuthenticationService::newStub,<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      (s, c, r) -&gt; s.getAuthenticationToken(c,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        AuthenticationProtos.GetAuthenticationTokenRequest.getDefaultInstance(), r),<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      HConstants.EMPTY_START_ROW).whenComplete((resp, error) -&gt; {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>        if (error != null) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>          future.completeExceptionally(ProtobufUtil.handleRemoteException(error));<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        } else {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>          future.complete(toToken(resp.getToken()));<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>    return future;<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>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * Obtain and return an authentication token for the current user.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * @param conn The HBase cluster connection<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * @throws IOException if a remote error or serialization problem occurs.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @return the authentication token instance<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public static Token&lt;AuthenticationTokenIdentifier&gt; obtainToken(Connection conn)<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      throws IOException {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    Table meta = null;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    try {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      injectFault();<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>      meta = conn.getTable(TableName.META_TABLE_NAME);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      CoprocessorRpcChannel rpcChannel = meta.coprocessorService(HConstants.EMPTY_START_ROW);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      AuthenticationProtos.AuthenticationService.BlockingInterface service =<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        AuthenticationService.newBlockingStub(rpcChannel);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      GetAuthenticationTokenResponse response =<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        service.getAuthenticationToken(null, GetAuthenticationTokenRequest.getDefaultInstance());<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return toToken(response.getToken());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    } catch (ServiceException se) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      throw ProtobufUtil.handleRemoteException(se);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    } finally {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (meta != null) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        meta.close();<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>  }<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 name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Converts a Token instance (with embedded identifier) to the protobuf representation.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   *<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @param token the Token instance to copy<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * @return the protobuf Token message<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  public static AuthenticationProtos.Token toToken(Token&lt;AuthenticationTokenIdentifier&gt; token) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    AuthenticationProtos.Token.Builder builder = AuthenticationProtos.Token.newBuilder();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    builder.setIdentifier(ByteString.copyFrom(token.getIdentifier()));<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    builder.setPassword(ByteString.copyFrom(token.getPassword()));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    if (token.getService() != null) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      builder.setService(ByteString.copyFromUtf8(token.getService().toString()));<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    return builder.build();<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 name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Obtain and return an authentication token for the current user.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @param conn The HBase cluster connection<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @return the authentication token instance<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public static Token&lt;AuthenticationTokenIdentifier&gt; obtainToken(<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      final Connection conn, User user) throws IOException, InterruptedException {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    return user.runAs(new PrivilegedExceptionAction&lt;Token&lt;AuthenticationTokenIdentifier&gt;&gt;() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      public Token&lt;AuthenticationTokenIdentifier&gt; run() throws Exception {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        return obtainToken(conn);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    });<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>  private static Text getClusterId(Token&lt;AuthenticationTokenIdentifier&gt; token)<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      throws IOException {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    return token.getService() != null<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        ? token.getService() : new Text("default");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * Obtain an authentication token for the given user and add it to the<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * user's credentials.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param conn The HBase cluster connection<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param user The user for whom to obtain the token<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public static void obtainAndCacheToken(final Connection conn,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      User user)<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      throws IOException, InterruptedException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      Token&lt;AuthenticationTokenIdentifier&gt; token = obtainToken(conn, user);<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>      if (token == null) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        throw new IOException("No token returned for user " + user.getName());<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (LOG.isDebugEnabled()) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        LOG.debug("Obtained token " + token.getKind().toString() + " for user " +<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            user.getName());<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      user.addToken(token);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    } catch (IOException ioe) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      throw ioe;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } catch (InterruptedException ie) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      throw ie;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    } catch (RuntimeException re) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      throw re;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    } catch (Exception e) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      throw new UndeclaredThrowableException(e,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          "Unexpected exception obtaining token for user " + user.getName());<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>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * Obtain an authentication token on behalf of the given user and add it to<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * the credentials for the given map reduce job.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param conn The HBase cluster connection<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @param user The user for whom to obtain the token<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * @param job The job instance in which the token should be stored<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public static void obtainTokenForJob(final Connection conn,<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      User user, Job job)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throws IOException, InterruptedException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      Token&lt;AuthenticationTokenIdentifier&gt; token = obtainToken(conn, user);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (token == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        throw new IOException("No token returned for user " + user.getName());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      Text clusterId = getClusterId(token);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      if (LOG.isDebugEnabled()) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        LOG.debug("Obtained token " + token.getKind().toString() + " for user " +<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            user.getName() + " on cluster " + clusterId.toString());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      job.getCredentials().addToken(clusterId, token);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    } catch (IOException ioe) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      throw ioe;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    } catch (InterruptedException ie) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      throw ie;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    } catch (RuntimeException re) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throw re;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } catch (Exception e) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      throw new UndeclaredThrowableException(e,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          "Unexpected exception obtaining token for user " + user.getName());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * See {@link ClientTokenUtil#obtainToken(org.apache.hadoop.hbase.client.Connection)}.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @deprecated External users should not use this method. Please post on<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   *   the HBase dev mailing list if you need this method. Internal<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   *   HBase code should use {@link ClientTokenUtil} instead.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  @Deprecated<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public static Token&lt;AuthenticationTokenIdentifier&gt; obtainToken(Connection conn)<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      throws IOException {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    return ClientTokenUtil.obtainToken(conn);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<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>   * See {@link ClientTokenUtil#toToken(org.apache.hadoop.security.token.Token)}.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * @deprecated External users should not use this method. Please post on<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   *   the HBase dev mailing list if you need this method. Internal<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   *   HBase code should use {@link ClientTokenUtil} instead.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  @Deprecated<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public static AuthenticationProtos.Token toToken(Token&lt;AuthenticationTokenIdentifier&gt; token) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    return ClientTokenUtil.toToken(token);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<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>   * See {@link ClientTokenUtil#obtainToken(org.apache.hadoop.hbase.client.Connection,<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * org.apache.hadoop.hbase.security.User)}.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * @deprecated External users should not use this method. Please post on<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   *   the HBase dev mailing list if you need this method. Internal<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   *   HBase code should use {@link ClientTokenUtil} instead.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  @Deprecated<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public static Token&lt;AuthenticationTokenIdentifier&gt; obtainToken(<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      final Connection conn, User user) throws IOException, InterruptedException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    return ClientTokenUtil.obtainToken(conn, user);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * See {@link ClientTokenUtil#obtainAndCacheToken(org.apache.hadoop.hbase.client.Connection,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * org.apache.hadoop.hbase.security.User)}.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public static void obtainAndCacheToken(final Connection conn,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      User user)<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      throws IOException, InterruptedException {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    ClientTokenUtil.obtainAndCacheToken(conn, user);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * See {@link ClientTokenUtil#toToken(org.apache.hadoop.security.token.Token)}.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @deprecated External users should not use this method. Please post on<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   *   the HBase dev mailing list if you need this method. Internal<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   *   HBase code should use {@link ClientTokenUtil} instead.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  @Deprecated<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  public static Token&lt;AuthenticationTokenIdentifier&gt; toToken(AuthenticationProtos.Token proto) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    return ClientTokenUtil.toToken(proto);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static Text getClusterId(Token&lt;AuthenticationTokenIdentifier&gt; token)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return token.getService() != null<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        ? token.getService() : new Text("default");<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  }<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>   * Obtain an authentication token on behalf of the given user and add it to<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * the credentials for the given map reduce job.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * @param conn The HBase cluster connection<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * @param user The user for whom to obtain the token<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param job The job instance in which the token should be stored<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public static void obtainTokenForJob(final Connection conn,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      User user, Job job)<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      throws IOException, InterruptedException {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    try {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      Token&lt;AuthenticationTokenIdentifier&gt; token = ClientTokenUtil.obtainToken(conn, user);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>      if (token == null) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        throw new IOException("No token returned for user " + user.getName());<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      Text clusterId = getClusterId(token);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      if (LOG.isDebugEnabled()) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        LOG.debug("Obtained token " + token.getKind().toString() + " for user " +<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            user.getName() + " on cluster " + clusterId.toString());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      job.getCredentials().addToken(clusterId, token);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    } catch (IOException ioe) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throw ioe;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    } catch (InterruptedException ie) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      throw ie;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    } catch (RuntimeException re) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      throw re;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    } catch (Exception e) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      throw new UndeclaredThrowableException(e,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          "Unexpected exception obtaining token for user " + user.getName());<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>  /**<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * Obtain an authentication token on behalf of the given user and add it to<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * the credentials for the given map reduce job.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * @param conn The HBase cluster connection<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * @param user The user for whom to obtain the token<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * @param job The job configuration in which the token should be stored<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  public static void obtainTokenForJob(final Connection conn, final JobConf job, User user)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      throws IOException, InterruptedException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    try {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      Token&lt;AuthenticationTokenIdentifier&gt; token = ClientTokenUtil.obtainToken(conn, user);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>      if (token == null) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        throw new IOException("No token returned for user " + user.getName());<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      Text clusterId = getClusterId(token);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      if (LOG.isDebugEnabled()) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        LOG.debug("Obtained token " + token.getKind().toString() + " for user " +<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            user.getName() + " on cluster " + clusterId.toString());<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      job.getCredentials().addToken(clusterId, token);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    } catch (IOException ioe) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      throw ioe;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    } catch (InterruptedException ie) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      throw ie;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    } catch (RuntimeException re) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      throw re;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } catch (Exception e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      throw new UndeclaredThrowableException(e,<a name="line.190"></a>
+<span class="sourceLineNo">191</span>          "Unexpected exception obtaining token for user "+user.getName());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  /**<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * Checks for an authentication token for the given user, obtaining a new token if necessary,<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * and adds it to the credentials for the given map reduce job.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @param conn The HBase cluster connection<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param user The user for whom to obtain the token<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param job The job configuration in which the token should be stored<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public static void addTokenForJob(final Connection conn, final JobConf job, User user)<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      throws IOException, InterruptedException {<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Token&lt;AuthenticationTokenIdentifier&gt; token = getAuthToken(conn.getConfiguration(), user);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    if (token == null) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      token = ClientTokenUtil.obtainToken(conn, user);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    job.getCredentials().addToken(token.getService(), token);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * Checks for an authentication token for the given user, obtaining a new token if necessary,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * and adds it to the credentials for the given map reduce job.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   *<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @param conn The HBase cluster connection<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @param user The user for whom to obtain the token<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param job The job instance in which the token should be stored<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  public static void addTokenForJob(final Connection conn, User user, Job job)<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      throws IOException, InterruptedException {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    Token&lt;AuthenticationTokenIdentifier&gt; token = getAuthToken(conn.getConfiguration(), user);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    if (token == null) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      token = ClientTokenUtil.obtainToken(conn, user);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    job.getCredentials().addToken(token.getService(), token);<a name="line.231"></a>
 <span class="sourceLineNo">232</span>  }<a name="line.232"></a>
 <span class="sourceLineNo">233</span><a name="line.233"></a>
 <span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * Obtain an authentication token on behalf of the given user and add it to<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   * the credentials for the given map reduce job.<a name="line.236"></a>
-<span class="sourceLineNo">237</span>   * @param conn The HBase cluster connection<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   * @param user The user for whom to obtain the token<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @param job The job configuration in which the token should be stored<a name="line.239"></a>
+<span class="sourceLineNo">235</span>   * Checks if an authentication tokens exists for the connected cluster,<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * obtaining one if needed and adding it to the user's credentials.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   *<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @param conn The HBase cluster connection<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * @param user The user for whom to obtain the token<a name="line.239"></a>
 <span class="sourceLineNo">240</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.240"></a>
 <span class="sourceLineNo">241</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  public static void obtainTokenForJob(final Connection conn, final JobConf job, User user)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      throws IOException, InterruptedException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    try {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      Token&lt;AuthenticationTokenIdentifier&gt; token = obtainToken(conn, user);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (token == null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        throw new IOException("No token returned for user " + user.getName());<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      Text clusterId = getClusterId(token);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      if (LOG.isDebugEnabled()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        LOG.debug("Obtained token " + token.getKind().toString() + " for user " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            user.getName() + " on cluster " + clusterId.toString());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      job.getCredentials().addToken(clusterId, token);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (IOException ioe) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw ioe;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } catch (InterruptedException ie) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      throw ie;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    } catch (RuntimeException re) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      throw re;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      throw new UndeclaredThrowableException(e,<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          "Unexpected exception obtaining token for user "+user.getName());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Checks for an authentication token for the given user, obtaining a new token if necessary,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * and adds it to the credentials for the given map reduce job.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   *<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param conn The HBase cluster connection<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @param user The user for whom to obtain the token<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @param job The job configuration in which the token should be stored<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  public static void addTokenForJob(final Connection conn, final JobConf job, User user)<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      throws IOException, InterruptedException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    Token&lt;AuthenticationTokenIdentifier&gt; token = getAuthToken(conn.getConfiguration(), user);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    if (token == null) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      token = obtainToken(conn, user);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    job.getCredentials().addToken(token.getService(), token);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>  /**<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * Checks for an authentication token for the given user, obtaining a new token if necessary,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * and adds it to the credentials for the given map reduce job.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   *<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @param conn The HBase cluster connection<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @param user The user for whom to obtain the token<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param job The job instance in which the token should be stored<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   */<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public static void addTokenForJob(final Connection conn, User user, Job job)<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      throws IOException, InterruptedException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Token&lt;AuthenticationTokenIdentifier&gt; token = getAuthToken(conn.getConfiguration(), user);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (token == null) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      token = obtainToken(conn, user);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    job.getCredentials().addToken(token.getService(), token);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Checks if an authentication tokens exists for the connected cluster,<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * obtaining one if needed and adding it to the user's credentials.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   *<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param conn The HBase cluster connection<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @param user The user for whom to obtain the token<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * @throws IOException If making a remote call to the authentication service fails<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @throws InterruptedException If executing as the given user is interrupted<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return true if the token was added, false if it already existed<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public static boolean addTokenIfMissing(Connection conn, User user)<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      throws IOException, InterruptedException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    Token&lt;AuthenticationTokenIdentifier&gt; token = getAuthToken(conn.getConfiguration(), user);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    if (token == null) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      token = obtainToken(conn, user);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      user.getUGI().addToken(token.getService(), token);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      return true;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return false;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Get the authentication token of the user for the cluster specified in the configuration<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @return null if the user does not have the token, otherwise the auth token for the cluster.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  private static Token&lt;AuthenticationTokenIdentifier&gt; getAuthToken(Configuration conf, User user)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      throws IOException, InterruptedException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ZKWatcher zkw = new ZKWatcher(conf, "TokenUtil-getAuthToken", null);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    try {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      String clusterId = ZKClusterId.readClusterIdZNode(zkw);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      if (clusterId == null) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        throw new IOException("Failed to get cluster ID");<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      return new AuthenticationTokenSelector().selectToken(new Text(clusterId), user.getTokens());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    } catch (KeeperException e) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      throw new IOException(e);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    } finally {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      zkw.close();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * Converts a protobuf Token message back into a Token instance.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   *<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @param proto the protobuf Token message<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * @return the Token instance<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   */<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  public static Token&lt;AuthenticationTokenIdentifier&gt; toToken(AuthenticationProtos.Token proto) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return new Token&lt;&gt;(<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        proto.hasIdentifier() ? proto.getIdentifier().toByteArray() : null,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        proto.hasPassword() ? proto.getPassword().toByteArray() : null,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        AuthenticationTokenIdentifier.AUTH_TOKEN_TYPE,<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        proto.hasService() ? new Text(proto.getService().toStringUtf8()) : null);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>}<a name="line.362"></a>
+<span class="sourceLineNo">242</span>   * @return true if the token was added, false if it already existed<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public static boolean addTokenIfMissing(Connection conn, User user)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      throws IOException, InterruptedException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Token&lt;AuthenticationTokenIdentifier&gt; token = getAuthToken(conn.getConfiguration(), user);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    if (token == null) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      token = ClientTokenUtil.obtainToken(conn, user);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      user.getUGI().addToken(token.getService(), token);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return true;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    return false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  /**<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * Get the authentication token of the user for the cluster specified in the configuration<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return null if the user does not have the token, otherwise the auth token for the cluster.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  private static Token&lt;AuthenticationTokenIdentifier&gt; getAuthToken(Configuration conf, User user)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      throws IOException, InterruptedException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    ZKWatcher zkw = new ZKWatcher(conf, "TokenUtil-getAuthToken", null);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      String clusterId = ZKClusterId.readClusterIdZNode(zkw);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (clusterId == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        throw new IOException("Failed to get cluster ID");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      return new AuthenticationTokenSelector().selectToken(new Text(clusterId), user.getTokens());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (KeeperException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    } finally {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      zkw.close();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>}<a name="line.274"></a>
 
 
 
diff --git a/downloads.html b/downloads.html
index f2fd5cc..4848ec6 100644
--- a/downloads.html
+++ b/downloads.html
@@ -394,7 +394,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 a4e6738..4632532 100644
--- a/export_control.html
+++ b/export_control.html
@@ -180,7 +180,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 6ee3af3..3b8b732 100644
--- a/index.html
+++ b/index.html
@@ -258,7 +258,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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-tracking.html b/issue-tracking.html
index a41883d..a6e6c71 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -152,7 +152,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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/mail-lists.html b/mail-lists.html
index 2805faa..f072786 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -205,7 +205,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 f50a87f..5774d3c 100644
--- a/metrics.html
+++ b/metrics.html
@@ -308,7 +308,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 7bd3e23..549298d 100644
--- a/old_news.html
+++ b/old_news.html
@@ -299,7 +299,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 3338b31..84f723c 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -304,7 +304,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 9b67cef..7cdf7c1 100644
--- a/plugins.html
+++ b/plugins.html
@@ -231,7 +231,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 8338af2..d4789cd 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -618,7 +618,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 98475e4..c61adc5 100644
--- a/project-info.html
+++ b/project-info.html
@@ -193,7 +193,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 497cbcf..cb5b45b 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -169,7 +169,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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-summary.html b/project-summary.html
index c2ff412..a8152f5 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -195,7 +195,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 a59768b..fb2d976 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -157,7 +157,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 04825b9..e562699 100644
--- a/replication.html
+++ b/replication.html
@@ -152,7 +152,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 1a5814a..2fb18c7 100644
--- a/resources.html
+++ b/resources.html
@@ -180,7 +180,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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/source-repository.html b/source-repository.html
index 58e6fd3..1787beb 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -163,7 +163,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 a962084..86ceca1 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -182,7 +182,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 285d917..9a01098 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -369,7 +369,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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-list.html b/team-list.html
index 7347ab2..df32af4 100644
--- a/team-list.html
+++ b/team-list.html
@@ -666,7 +666,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-09-19</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-09-20</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 d05f7d8..28fff7e 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -923,6 +923,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutBlockingRpcChannel.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestClientTimeouts.RandomTimeoutBlockingRpcChannel</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcChannel.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestClientTimeouts.RandomTimeoutRpcChannel</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcClient.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestClientTimeouts.RandomTimeoutRpcClient</a></li>
+<li><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestClientTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestClockSkewDetection</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientAfterSplittingRegion.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestCloneSnapshotFromClientAfterSplittingRegion</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestCloneSnapshotFromClientCloneLinksAfterDelete</a></li>
@@ -2551,7 +2552,6 @@
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication</a></li>
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication.NonShadedBlockingRpcCallback</a></li>
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication.TokenServer</a></li>
-<li><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureBackoff.html" title="class in org.apache.hadoop.hbase.master.replication" target="classFrame">TestTransitPeerSyncReplicationStateProcedureBackoff</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureBackoff.TestTransitPeerSyncReplicationStateProcedure.html" title="class in org.apache.hadoop.hbase.master.replication" target="classFrame">TestTransitPeerSyncReplicationStateProcedureBackoff.TestTransitPeerSyncReplicationStateProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureRetry.html" title="class in org.apache.hadoop.hbase.master.replication" target="classFrame">TestTransitPeerSyncReplicationStateProcedureRetry</a></li>
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 7510bf2..f49e469 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -923,6 +923,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutBlockingRpcChannel.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutBlockingRpcChannel</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcChannel.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutRpcChannel</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcClient.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutRpcClient</a></li>
+<li><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class in org.apache.hadoop.hbase.master">TestClockSkewDetection</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientAfterSplittingRegion.html" title="class in org.apache.hadoop.hbase.client">TestCloneSnapshotFromClientAfterSplittingRegion</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class in org.apache.hadoop.hbase.client">TestCloneSnapshotFromClientCloneLinksAfterDelete</a></li>
@@ -2551,7 +2552,6 @@
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></li>
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication.NonShadedBlockingRpcCallback</a></li>
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication.TokenServer</a></li>
-<li><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureBackoff.html" title="class in org.apache.hadoop.hbase.master.replication">TestTransitPeerSyncReplicationStateProcedureBackoff</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureBackoff.TestTransitPeerSyncReplicationStateProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">TestTransitPeerSyncReplicationStateProcedureBackoff.TestTransitPeerSyncReplicationStateProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureRetry.html" title="class in org.apache.hadoop.hbase.master.replication">TestTransitPeerSyncReplicationStateProcedureRetry</a></li>
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 8ff1982..e2556f7 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -4402,7 +4402,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CKTYPE">CKTYPE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html#cl">cl</a></span> - Variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#cl">cl</a></span> - Variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClassFinder.html#CLASS_EXT">CLASS_EXT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClassFinder.html" title="class in org.apache.hadoop.hbase">ClassFinder</a></dt>
 <dd>&nbsp;</dd>
@@ -6764,6 +6764,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">TestAuthenticationKey</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token">TestDelegationTokenWithEncryption</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestFsDelegationToken</a></dt>
@@ -6772,8 +6774,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">TestZKSecretWatcher</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.html" title="class in org.apache.hadoop.hbase.security.token">TestZKSecretWatcherRefreshKeys</a></dt>
@@ -40149,6 +40149,8 @@
 <dd>
 <div class="block">Setup and start kerberos, hbase</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token">TestDelegationTokenWithEncryption</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestFsDelegationToken</a></dt>
@@ -40157,8 +40159,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelReplicationWithExpAsString.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelReplicationWithExpAsString.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabelReplicationWithExpAsString</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabelsReplication</a></dt>
@@ -45787,9 +45787,9 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/SecureTestCluster.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/SecureTestCluster.html" title="class in org.apache.hadoop.hbase.security.token">SecureTestCluster</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabels</a></dt>
 <dd>&nbsp;</dd>
@@ -50835,6 +50835,10 @@
 <dd>
 <div class="block">Rpc Channel implementation with RandomTimeoutBlockingRpcChannel</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestClientTokenUtil</span></a> - Class in <a href="org/apache/hadoop/hbase/security/token/package-summary.html">org.apache.hadoop.hbase.security.token</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#TestClientTokenUtil--">TestClientTokenUtil()</a></span> - Constructor for class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ClientPushbackTestBase.html#testClientTracksServerPushback--">testClientTracksServerPushback()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ClientPushbackTestBase.html" title="class in org.apache.hadoop.hbase.client">ClientPushbackTestBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestClockSkewDetection</span></a> - Class in <a href="org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></dt>
@@ -60803,7 +60807,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.html#testObsoleteMethod--">testObsoleteMethod()</a></span> - Method in class org.apache.hadoop.hbase.tool.coprocessor.<a href="org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.html" title="class in org.apache.hadoop.hbase.tool.coprocessor">CoprocessorValidatorTest</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html#testObtainToken--">testObtainToken()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#testObtainToken--">testObtainToken()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/crypto/TestEncryption.html#testOddSizedBlocks--">testOddSizedBlocks()</a></span> - Method in class org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/TestEncryption.html" title="class in org.apache.hadoop.hbase.io.crypto">TestEncryption</a></dt>
 <dd>&nbsp;</dd>
@@ -69207,10 +69211,6 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#testTokenCreation--">testTokenCreation()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenUtil</span></a> - Class in <a href="org/apache/hadoop/hbase/security/token/package-summary.html">org.apache.hadoop.hbase.security.token</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html#TestTokenUtil--">TestTokenUtil()</a></span> - Constructor for class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestBytes.html#testToLong--">testToLong()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestBytes.html" title="class in org.apache.hadoop.hbase.util">TestBytes</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.html#testTooBigEntry--">testTooBigEntry()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">TestBucketWriterThread</a></dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 35c90b2..abb0586 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -6649,35 +6649,35 @@
 <tbody>
 <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">TestAuthenticationKey.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClientTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.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">TestDelegationTokenWithEncryption.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAuthenticationKey.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.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">TestFsDelegationToken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDelegationTokenWithEncryption.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.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">TestZKSecretWatcherRefreshKeys.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFsDelegationToken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.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">TestTokenAuthentication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestZKSecretWatcherRefreshKeys.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.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">TestGenerateDelegationToken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTokenAuthentication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.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">TestZKSecretWatcher.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGenerateDelegationToken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.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">TestTokenUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestZKSecretWatcher.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
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 97a72e5..97b14f0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -162,8 +162,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/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>
+<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>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html
index 669f0b6..fec6d0f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.294">MockMasterServices.MockRegionStateStore</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.292">MockMasterServices.MockRegionStateStore</a>
 extends org.apache.hadoop.hbase.master.assignment.RegionStateStore</pre>
 </li>
 </ul>
@@ -224,7 +224,7 @@ extends org.apache.hadoop.hbase.master.assignment.RegionStateStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MockRegionStateStore</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html#line.295">MockRegionStateStore</a>(org.apache.hadoop.hbase.master.MasterServices&nbsp;master)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html#line.293">MockRegionStateStore</a>(org.apache.hadoop.hbase.master.MasterServices&nbsp;master)</pre>
 </li>
 </ul>
 </li>
@@ -241,7 +241,7 @@ extends org.apache.hadoop.hbase.master.assignment.RegionStateStore</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>updateRegionLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html#line.300">updateRegionLocation</a>(org.apache.hadoop.hbase.master.assignment.RegionStateNode&nbsp;regionNode)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html#line.298">updateRegionLocation</a>(org.apache.hadoop.hbase.master.assignment.RegionStateNode&nbsp;regionNode)
                           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="overrideSpecifyLabel">Overrides:</span></dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
index 6dc3bdd..1b57d0f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.80">MockMasterServices</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.79">MockMasterServices</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html" title="class in org.apache.hadoop.hbase.master">MockNoopMasterServices</a></pre>
 <div class="block">A mocked master services.
  Tries to fake it. May not always work.</div>
@@ -374,7 +374,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>fileSystemManager</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.MasterFileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.81">fileSystemManager</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.MasterFileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.80">fileSystemManager</a></pre>
 </li>
 </ul>
 <a name="walManager">
@@ -383,7 +383,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>walManager</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.MasterWalManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.82">walManager</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.MasterWalManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.81">walManager</a></pre>
 </li>
 </ul>
 <a name="assignmentManager">
@@ -392,7 +392,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>assignmentManager</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.assignment.AssignmentManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.83">assignmentManager</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.assignment.AssignmentManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.82">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="tableStateManager">
@@ -401,7 +401,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>tableStateManager</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.TableStateManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.84">tableStateManager</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.TableStateManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.83">tableStateManager</a></pre>
 </li>
 </ul>
 <a name="procedureEnv">
@@ -410,7 +410,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureEnv</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.86">procedureEnv</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.85">procedureEnv</a></pre>
 </li>
 </ul>
 <a name="procedureExecutor">
@@ -419,7 +419,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureExecutor</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.87">procedureExecutor</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.86">procedureExecutor</a></pre>
 </li>
 </ul>
 <a name="procedureStore">
@@ -428,7 +428,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureStore</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.procedure2.store.ProcedureStore <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.88">procedureStore</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.procedure2.store.ProcedureStore <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.87">procedureStore</a></pre>
 </li>
 </ul>
 <a name="connection">
@@ -437,7 +437,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>connection</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.89">connection</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.88">connection</a></pre>
 </li>
 </ul>
 <a name="balancer">
@@ -446,7 +446,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>balancer</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.LoadBalancer <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.90">balancer</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.LoadBalancer <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.89">balancer</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -455,7 +455,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>serverManager</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.ServerManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.91">serverManager</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.ServerManager <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.90">serverManager</a></pre>
 </li>
 </ul>
 <a name="initialized">
@@ -464,7 +464,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>initialized</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent&lt;?&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.93">initialized</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent&lt;?&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.92">initialized</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_COLUMN_FAMILY_NAME">
@@ -473,7 +473,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_COLUMN_FAMILY_NAME</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.94">DEFAULT_COLUMN_FAMILY_NAME</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.93">DEFAULT_COLUMN_FAMILY_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.MockMasterServices.DEFAULT_COLUMN_FAMILY_NAME">Constant Field Values</a></dd>
@@ -486,7 +486,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MOCK_MASTER_SERVERNAME</h4>
-<pre>public static final&nbsp;org.apache.hadoop.hbase.ServerName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.95">MOCK_MASTER_SERVERNAME</a></pre>
+<pre>public static final&nbsp;org.apache.hadoop.hbase.ServerName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.94">MOCK_MASTER_SERVERNAME</a></pre>
 </li>
 </ul>
 </li>
@@ -503,7 +503,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MockMasterServices</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.98">MockMasterServices</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.97">MockMasterServices</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;org.apache.hadoop.hbase.ServerName,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;byte[]&gt;&gt;&nbsp;regionsToRegionServers)
                    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>
@@ -526,7 +526,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.150">start</a>(int&nbsp;numServes,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.148">start</a>(int&nbsp;numServes,
                   org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher&nbsp;remoteDispatcher)
            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>,
                   org.apache.zookeeper.KeeperException</pre>
@@ -543,7 +543,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>restartRegionServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.169">restartRegionServer</a>(org.apache.hadoop.hbase.ServerName&nbsp;serverName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.167">restartRegionServer</a>(org.apache.hadoop.hbase.ServerName&nbsp;serverName)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Call this restart method only after running MockMasterServices#start()
  The RSs can be differentiated by the port number, see
@@ -563,7 +563,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.186">stop</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.184">stop</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>stop</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Stoppable</code></dd>
@@ -578,7 +578,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>startProcedureExecutor</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.191">startProcedureExecutor</a>(org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher&nbsp;remoteDispatcher)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.189">startProcedureExecutor</a>(org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher&nbsp;remoteDispatcher)
                              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>
@@ -592,7 +592,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>stopProcedureExecutor</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.220">stopProcedureExecutor</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.218">stopProcedureExecutor</a>()</pre>
 </li>
 </ul>
 <a name="isInitialized--">
@@ -601,7 +601,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>isInitialized</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.235">isInitialized</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.233">isInitialized</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isInitialized</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -616,7 +616,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitializedEvent</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent&lt;?&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.240">getInitializedEvent</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent&lt;?&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.238">getInitializedEvent</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getInitializedEvent</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -631,7 +631,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterFileSystem</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterFileSystem&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.245">getMasterFileSystem</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterFileSystem&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.243">getMasterFileSystem</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterFileSystem</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -646,7 +646,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterWalManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterWalManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.250">getMasterWalManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterWalManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.248">getMasterWalManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterWalManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -661,7 +661,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterProcedureExecutor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.255">getMasterProcedureExecutor</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.253">getMasterProcedureExecutor</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterProcedureExecutor</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -676,7 +676,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoadBalancer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.LoadBalancer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.260">getLoadBalancer</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.LoadBalancer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.258">getLoadBalancer</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getLoadBalancer</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -691,7 +691,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.ServerManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.265">getServerManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.ServerManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.263">getServerManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getServerManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -706,7 +706,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getAssignmentManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.assignment.AssignmentManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.270">getAssignmentManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.assignment.AssignmentManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.268">getAssignmentManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getAssignmentManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -721,7 +721,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableStateManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.TableStateManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.275">getTableStateManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.TableStateManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.273">getTableStateManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getTableStateManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -736,7 +736,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnection</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.Connection&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.280">getConnection</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.Connection&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.278">getConnection</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getConnection</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -751,7 +751,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.ServerName&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.285">getServerName</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.ServerName&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.283">getServerName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getServerName</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -766,7 +766,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoordinatedStateManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.CoordinatedStateManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.290">getCoordinatedStateManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.CoordinatedStateManager&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.288">getCoordinatedStateManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getCoordinatedStateManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -781,7 +781,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptors</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.TableDescriptors&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.305">getTableDescriptors</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.TableDescriptors&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.303">getTableDescriptors</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getTableDescriptors</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -796,7 +796,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <ul class="blockListLast">
 <li class="blockList">
 <h4>buildMultiResponse</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.346">buildMultiResponse</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest&nbsp;req)</pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html#line.344">buildMultiResponse</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest&nbsp;req)</pre>
 </li>
 </ul>
 </li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html
index 4c08784..cce03f8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.391">TestZKProcedureControllers.StartControllers</a>
+<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.390">TestZKProcedureControllers.StartControllers</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">Specify how the controllers that should be started (not spy/mockable) for the test.</div>
 </li>
@@ -190,7 +190,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StartControllers</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html#line.391">StartControllers</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html#line.390">StartControllers</a>()</pre>
 </li>
 </ul>
 </li>
@@ -207,7 +207,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>start</h4>
-<pre>public abstract&nbsp;org.apache.hadoop.hbase.util.Pair&lt;org.apache.hadoop.hbase.procedure.ZKProcedureCoordinator,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html#line.392">start</a>(org.apache.hadoop.hbase.zo [...]
+<pre>public abstract&nbsp;org.apache.hadoop.hbase.util.Pair&lt;org.apache.hadoop.hbase.procedure.ZKProcedureCoordinator,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html#line.391">start</a>(org.apache.hadoop.hbase.zo [...]
                                                                                                                                                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;operationName,
                                                                                                                                                                                 org.apache.hadoop.hbase.procedure.ProcedureCoordinator&nbsp;coordinator,
                                                                                                                                                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;controllerName,
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html
index 8e83c19..f019d8e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html
@@ -393,7 +393,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startCoordinatorFirst</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html" title="class in org.apache.hadoop.hbase.procedure">TestZKProcedureControllers.StartControllers</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.398">startCoordinatorFirst</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html" title="class in org.apache.hadoop.hbase.procedure">TestZKProcedureControllers.StartControllers</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.397">startCoordinatorFirst</a></pre>
 </li>
 </ul>
 <a name="startCohortFirst">
@@ -402,7 +402,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>startCohortFirst</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html" title="class in org.apache.hadoop.hbase.procedure">TestZKProcedureControllers.StartControllers</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.426">startCohortFirst</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html" title="class in org.apache.hadoop.hbase.procedure">TestZKProcedureControllers.StartControllers</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.425">startCohortFirst</a></pre>
 <div class="block">Check for the possible race condition where a cohort member starts after the controller and
  therefore could miss a new operation</div>
 </li>
@@ -576,7 +576,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyZooKeeperClean</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.354">verifyZooKeeperClean</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;operationName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.353">verifyZooKeeperClean</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;operationName,
                                   org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;watcher,
                                   org.apache.hadoop.hbase.procedure.ZKProcedureUtil&nbsp;controller)
                            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>
@@ -593,7 +593,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyCohort</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.367">verifyCohort</a>(org.apache.hadoop.hbase.procedure.ProcedureMember&nbsp;member,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.366">verifyCohort</a>(org.apache.hadoop.hbase.procedure.ProcedureMember&nbsp;member,
                           int&nbsp;cohortSize,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;operationName,
                           byte[]&nbsp;data)</pre>
@@ -606,7 +606,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>verifyCoordinator</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.379">verifyCoordinator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;operationName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html#line.378">verifyCoordinator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;operationName,
                                org.apache.hadoop.hbase.procedure.ProcedureCoordinator&nbsp;coordinator,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;expected)</pre>
 <div class="block">Verify that the coordinator only got called once for each expected node</div>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
index b2cf5a6..8e8d54b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
@@ -81,14 +81,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&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;)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&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;)
+<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.procedure.ProcedureManager
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 0a220ee..4416767 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -241,10 +241,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.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/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/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/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/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/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
index 9c2eac6..1334cca 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
@@ -331,7 +331,7 @@ extends org.apache.hadoop.hbase.regionserver.HStoreFile</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStoreFile</h3>
-<code>closeStoreFile, deleteStoreFile, excludeFromMinorCompaction, getCacheConf, getCompactedStoreFiles, getComparator, getFileInfo, getFirstKey, getLastKey, getMaxMemStoreTS, getPath, getQualifiedPath, getRefCount, isHFile, isReferencedInReads, toString, toStringDetailed</code></li>
+<code>closeStoreFile, deleteStoreFile, excludeFromMinorCompaction, getCacheConf, getCompactedStoreFiles, getComparator, getEncodedPath, getFileInfo, getFirstKey, getLastKey, getMaxMemStoreTS, getPath, getQualifiedPath, getRefCount, isHFile, isReferencedInReads, toString, toStringDetailed</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 1d533ca..49f90aa 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -710,11 +710,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/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/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/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/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/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html
index 19b3817..018965a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/SecureTestCluster.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" target="_top">Frames</a></li>
@@ -268,7 +268,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/security/token/SecureTestCluster.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" target="_top">Frames</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenUtil.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html
similarity index 82%
rename from testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenUtil.html
rename to testdevapidocs/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html
index e1b3bb5..05021c7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenUtil.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TestTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<title>TestClientTokenUtil (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,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TestTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)";
+            parent.document.title="TestClientTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)";
         }
     }
     catch(err) {
@@ -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/TestTokenUtil.html">Use</a></li>
+<li><a href="class-use/TestClientTokenUtil.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/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestTokenUtil.html" target="_top">Frames</a></li>
-<li><a href="TestTokenUtil.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="TestClientTokenUtil.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>
@@ -93,14 +93,14 @@ var activeTableTab = "activeTableTab";
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
 <div class="subTitle">org.apache.hadoop.hbase.security.token</div>
-<h2 title="Class TestTokenUtil" class="title">Class TestTokenUtil</h2>
+<h2 title="Class TestClientTokenUtil" class="title">Class TestClientTokenUtil</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>org.apache.hadoop.hbase.security.token.TestTokenUtil</li>
+<li>org.apache.hadoop.hbase.security.token.TestClientTokenUtil</li>
 </ul>
 </li>
 </ul>
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html#line.46">TestTokenUtil</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#line.45">TestClientTokenUtil</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>
@@ -131,11 +131,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true" title="class or interface in java.net">URLClassLoader</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html#cl">cl</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#cl">cl</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"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -152,7 +152,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/security/token/TestTokenUtil.html#TestTokenUtil--">TestTokenUtil</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#TestClientTokenUtil--">TestClientTokenUtil</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -171,15 +171,15 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </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/security/token/TestTokenUtil.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.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/security/token/TestTokenUtil.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.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/security/token/TestTokenUtil.html#testObtainToken--">testObtainToken</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#testObtainToken--">testObtainToken</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -209,7 +209,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/security/token/TestTokenUtil.html#line.49">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/security/token/TestClientTokenUtil.html#line.48">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="cl">
@@ -218,7 +218,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cl</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true" title="class or interface in java.net">URLClassLoader</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html#line.52">cl</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/URLClassLoader.html?is-external=true" title="class or interface in java.net">URLClassLoader</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#line.51">cl</a></pre>
 </li>
 </ul>
 </li>
@@ -229,13 +229,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="TestTokenUtil--">
+<a name="TestClientTokenUtil--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>TestTokenUtil</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html#line.46">TestTokenUtil</a>()</pre>
+<h4>TestClientTokenUtil</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#line.45">TestClientTokenUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -252,7 +252,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html#line.55">setUp</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#line.54">setUp</a>()</pre>
 </li>
 </ul>
 <a name="tearDown--">
@@ -261,7 +261,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html#line.62">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#line.61">tearDown</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>
@@ -275,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>testObtainToken</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html#line.67">testObtainToken</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html#line.66">testObtainToken</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>
@@ -302,7 +302,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/TestTokenUtil.html">Use</a></li>
+<li><a href="class-use/TestClientTokenUtil.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>
@@ -311,12 +311,12 @@ 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/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestTokenUtil.html" target="_top">Frames</a></li>
-<li><a href="TestTokenUtil.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="TestClientTokenUtil.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/security/token/TestDelegationTokenWithEncryption.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html
index 3c84ca2..51d70d9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -369,7 +369,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/token/Secure
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html
index 7efdc76..2cbd6cf 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" target="_top">Frames</a></li>
@@ -806,7 +806,7 @@ implements org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos.Authe
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" target="_top">Frames</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html
index 49731ac..0ea4774 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.AuthenticationTokenSecretManagerForTest.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -428,7 +428,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/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.AuthenticationTokenSecretManagerForTest.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestClientTokenUtil.html
similarity index 82%
rename from testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html
rename to testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestClientTokenUtil.html
index 1b8f483..ec0e029 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/class-use/TestClientTokenUtil.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.security.token.TestTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<title>Uses of Class org.apache.hadoop.hbase.security.token.TestClientTokenUtil (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,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.security.token.TestTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)";
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.security.token.TestClientTokenUtil (Apache HBase 3.0.0-SNAPSHOT Test API)";
         }
     }
     catch(err) {
@@ -33,7 +33,7 @@
 <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/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">Class</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">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>
@@ -47,8 +47,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html" target="_top">Frames</a></li>
-<li><a href="TestTokenUtil.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/TestClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="TestClientTokenUtil.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>
@@ -70,9 +70,9 @@
 </a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
 <div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.security.token.TestTokenUtil" class="title">Uses of Class<br>org.apache.hadoop.hbase.security.token.TestTokenUtil</h2>
+<h2 title="Uses of Class org.apache.hadoop.hbase.security.token.TestClientTokenUtil" class="title">Uses of Class<br>org.apache.hadoop.hbase.security.token.TestClientTokenUtil</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.security.token.TestTokenUtil</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.security.token.TestClientTokenUtil</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->
@@ -84,7 +84,7 @@
 <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/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">Class</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">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>
@@ -98,8 +98,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/TestTokenUtil.html" target="_top">Frames</a></li>
-<li><a href="TestTokenUtil.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/security/token/class-use/TestClientTokenUtil.html" target="_top">Frames</a></li>
+<li><a href="TestClientTokenUtil.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/security/token/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/package-frame.html
index 9f6d6d1..92f8477 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/package-frame.html
@@ -15,13 +15,13 @@
 <ul title="Classes">
 <li><a href="SecureTestCluster.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">SecureTestCluster</a></li>
 <li><a href="TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestAuthenticationKey</a></li>
+<li><a href="TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestClientTokenUtil</a></li>
 <li><a href="TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestDelegationTokenWithEncryption</a></li>
 <li><a href="TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestFsDelegationToken</a></li>
 <li><a href="TestGenerateDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestGenerateDelegationToken</a></li>
 <li><a href="TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication</a></li>
 <li><a href="TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication.NonShadedBlockingRpcCallback</a></li>
 <li><a href="TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication.TokenServer</a></li>
-<li><a href="TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenUtil</a></li>
 <li><a href="TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestZKSecretWatcher</a></li>
 <li><a href="TestZKSecretWatcher.AuthenticationTokenSecretManagerForTest.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestZKSecretWatcher.AuthenticationTokenSecretManagerForTest</a></li>
 <li><a href="TestZKSecretWatcher.MockAbortable.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestZKSecretWatcher.MockAbortable</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/package-summary.html
index ed85679..f8c5cb2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/package-summary.html
@@ -93,39 +93,39 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token">TestDelegationTokenWithEncryption</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestClientTokenUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestFsDelegationToken</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html" title="class in org.apache.hadoop.hbase.security.token">TestDelegationTokenWithEncryption</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestGenerateDelegationToken</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestFsDelegationToken</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestGenerateDelegationToken</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></td>
 <td class="colLast">
 <div class="block">Tests for authentication token creation and usage</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication.NonShadedBlockingRpcCallback</a>&lt;R&gt;</td>
 <td class="colLast">
 <div class="block">A copy of the BlockingRpcCallback class for use locally.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication.TokenServer</a></td>
 <td class="colLast">
 <div class="block">Basic server process for RPC authentication testing</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">TestZKSecretWatcher</a></td>
 <td class="colLast">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/package-tree.html
index f8006af..d3a0508 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/package-tree.html
@@ -97,10 +97,10 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestAuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestAuthenticationKey</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestClientTokenUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestFsDelegationToken</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenAuthentication</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenAuthentication.NonShadedBlockingRpcCallback</span></a>&lt;R&gt; (implements com.google.protobuf.RpcCallback&lt;ParameterType&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestZKSecretWatcher</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.MockAbortable.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestZKSecretWatcher.MockAbortable</span></a> (implements org.apache.hadoop.hbase.Abortable)</li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="../../../../../../org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestZKSecretWatcherRefreshKeys</span></a></li>
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index a93523d..3b890bd 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2787,6 +2787,7 @@
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestClientOperationTimeout.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestClientOperationTimeout</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestClientScannerRPCTimeout</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientTimeouts.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestClientTimeouts</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestClientTokenUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestClockSkewDetection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestCloseAnOpeningRegion.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestCloseAnOpeningRegion</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestCloseRegionWhileRSCrash.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestCloseRegionWhileRSCrash</span></a></li>
@@ -4165,7 +4166,6 @@
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestTinyLfuBlockCache.CachedItem.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestTinyLfuBlockCache.CachedItem</span></a> (implements org.apache.hadoop.hbase.io.hfile.Cacheable)</li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenAuthentication</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenAuthentication.NonShadedBlockingRpcCallback</span></a>&lt;R&gt; (implements com.google.protobuf.RpcCallback&lt;ParameterType&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/TestTransitPeerSyncReplicationStateProcedureBackoff.html" title="class in org.apache.hadoop.hbase.master.replication"><span class="typeNameLink">TestTransitPeerSyncReplicationStateProcedureBackoff</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestTransitRegionStateProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestTransitRegionStateProcedure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestUnion2.html" title="class in org.apache.hadoop.hbase.types"><span class="typeNameLink">TestUnion2</span></a></li>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestSplitMerge.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestSplitMerge.html
index 6dcd0045..682f942 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestSplitMerge.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestSplitMerge.html
@@ -117,51 +117,49 @@
 <span class="sourceLineNo">109</span><a name="line.109"></a>
 <span class="sourceLineNo">110</span>  @Test<a name="line.110"></a>
 <span class="sourceLineNo">111</span>  public void testMergeRegionOrder() throws Exception {<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    int regionCount= 20;<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>    TableName tableName = TableName.valueOf("MergeRegionOrder");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    byte[] family = Bytes.toBytes("CF");<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    TableDescriptor td = TableDescriptorBuilder.newBuilder(tableName)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(family)).build();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>    byte[][] splitKeys = new byte[regionCount-1][];<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    for (int c = 0; c &lt; regionCount-1; c++) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      splitKeys[c] = Bytes.toBytes(c+1 * 1000);<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>    UTIL.getAdmin().createTable(td, splitKeys);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    UTIL.waitTableAvailable(tableName);<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    List&lt;RegionInfo&gt; regions = UTIL.getAdmin().getRegions(tableName);<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    byte[][] regionNames = new byte[regionCount][];<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    for (int c = 0; c &lt; regionCount; c++) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      regionNames[c] = regions.get(c).getRegionName();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    UTIL.getAdmin().mergeRegionsAsync(regionNames, false).get(60, TimeUnit.SECONDS);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    List&lt;RegionInfo&gt; mergedRegions =<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        MetaTableAccessor.getTableRegions(UTIL.getConnection(), tableName);<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>    assertEquals(1, mergedRegions.size());<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    RegionInfo mergedRegion = mergedRegions.get(0);<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    List&lt;RegionInfo&gt; mergeParentRegions = MetaTableAccessor.getMergeRegions(UTIL.getConnection(),<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      mergedRegion.getEncodedNameAsBytes());<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    assertEquals(mergeParentRegions.size(), regionCount);<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>    for (int c = 0; c &lt; regionCount-1; c++) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      assertTrue(Bytes.compareTo(<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        mergeParentRegions.get(c).getStartKey(),<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        mergeParentRegions.get(c+1).getStartKey()) &lt; 0);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    }<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">112</span>    int regionCount= 20;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TableName tableName = TableName.valueOf("MergeRegionOrder");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    byte[] family = Bytes.toBytes("CF");<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    TableDescriptor td = TableDescriptorBuilder.newBuilder(tableName)<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(family)).build();<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    byte[][] splitKeys = new byte[regionCount-1][];<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>    for (int c = 0; c &lt; regionCount-1; c++) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      splitKeys[c] = Bytes.toBytes(c+1 * 1000);<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>    UTIL.getAdmin().createTable(td, splitKeys);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    UTIL.waitTableAvailable(tableName);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    List&lt;RegionInfo&gt; regions = UTIL.getAdmin().getRegions(tableName);<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    byte[][] regionNames = new byte[regionCount][];<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    for (int c = 0; c &lt; regionCount; c++) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      regionNames[c] = regions.get(c).getRegionName();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>    UTIL.getAdmin().mergeRegionsAsync(regionNames, false).get(60, TimeUnit.SECONDS);<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>    List&lt;RegionInfo&gt; mergedRegions =<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        MetaTableAccessor.getTableRegions(UTIL.getConnection(), tableName);<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    assertEquals(1, mergedRegions.size());<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    RegionInfo mergedRegion = mergedRegions.get(0);<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    List&lt;RegionInfo&gt; mergeParentRegions = MetaTableAccessor.getMergeRegions(UTIL.getConnection(),<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      mergedRegion.getRegionName());<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    assertEquals(mergeParentRegions.size(), regionCount);<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    for (int c = 0; c &lt; regionCount - 1; c++) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      assertTrue(Bytes.compareTo(mergeParentRegions.get(c).getStartKey(),<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        mergeParentRegions.get(c + 1).getStartKey()) &lt; 0);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>}<a name="line.154"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html
index 79a4648..b31d639 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.MockRegionStateStore.html
@@ -72,303 +72,301 @@
 <span class="sourceLineNo">064</span>import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;<a name="line.64"></a>
 <span class="sourceLineNo">065</span><a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionAction;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionActionResult;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ResultOrException;<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 mocked master services.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * Tries to fake it. May not always work.<a name="line.78"></a>
-<span class="sourceLineNo">079</span> */<a name="line.79"></a>
-<span class="sourceLineNo">080</span>public class MockMasterServices extends MockNoopMasterServices {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private final MasterFileSystem fileSystemManager;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private final MasterWalManager walManager;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private final AssignmentManager assignmentManager;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private final TableStateManager tableStateManager;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private MasterProcedureEnv procedureEnv;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private ProcedureStore procedureStore;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final Connection connection;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final LoadBalancer balancer;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final ServerManager serverManager;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public static final String DEFAULT_COLUMN_FAMILY_NAME = "cf";<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public static final ServerName MOCK_MASTER_SERVERNAME =<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      ServerName.valueOf("mockmaster.example.org", 1234, -1L);<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public MockMasterServices(Configuration conf,<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      NavigableMap&lt;ServerName, SortedSet&lt;byte[]&gt;&gt; regionsToRegionServers) throws IOException {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    super(conf);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    Superusers.initialize(conf);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.walManager = new MasterWalManager(this);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // Mock an AM.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    this.assignmentManager = new AssignmentManager(this, new MockRegionStateStore(this)) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      @Override<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      public boolean isTableEnabled(final TableName tableName) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        return true;<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>      @Override<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      public boolean isTableDisabled(final TableName tableName) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        return false;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    };<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.serverManager = new ServerManager(this);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.tableStateManager = Mockito.mock(TableStateManager.class);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Mockito.when(this.tableStateManager.getTableState(Mockito.any())).<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        thenReturn(new TableState(TableName.valueOf("AnyTableNameSetInMockMasterServcies"),<a name="line.120"></a>
-<span class="sourceLineNo">121</span>            TableState.State.ENABLED));<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // Mock up a Client Interface<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    ClientProtos.ClientService.BlockingInterface ri =<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    MutateResponse.Builder builder = MutateResponse.newBuilder();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    builder.setProcessed(true);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    try {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      Mockito.when(ri.mutate(any(), any())).thenReturn(builder.build());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    } catch (ServiceException se) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      throw ProtobufUtil.handleRemoteException(se);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    try {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      Mockito.when(ri.multi(any(), any())).thenAnswer(new Answer&lt;MultiResponse&gt;() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          @Override<a name="line.135"></a>
-<span class="sourceLineNo">136</span>          public MultiResponse answer(InvocationOnMock invocation) throws Throwable {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>            return buildMultiResponse(invocation.getArgument(1));<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>    } catch (ServiceException se) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      throw ProtobufUtil.getRemoteException(se);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    this.connection = HConnectionTestingUtility.getMockedConnection(getConfiguration());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    // Set hbase.rootdir into test dir.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    Path rootdir = FSUtils.getRootDir(getConfiguration());<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    FSUtils.setRootDir(getConfiguration(), rootdir);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    Mockito.mock(AdminProtos.AdminService.BlockingInterface.class);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void start(final int numServes, final RSProcedureDispatcher remoteDispatcher)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      throws IOException, KeeperException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    startProcedureExecutor(remoteDispatcher);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    this.assignmentManager.start();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    for (int i = 0; i &lt; numServes; ++i) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      ServerName sn = ServerName.valueOf("localhost", 100 + i, 1);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    this.procedureExecutor.getEnvironment().setEventReady(initialized, true);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Call this restart method only after running MockMasterServices#start()<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * The RSs can be differentiated by the port number, see<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * ServerName in MockMasterServices#start() method above.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * Restart of region server will have new startcode in server name<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   *<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param serverName Server name to be restarted<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public void restartRegionServer(ServerName serverName) throws IOException {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    List&lt;ServerName&gt; onlineServers = serverManager.getOnlineServersList();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    long startCode = -1;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    for (ServerName s : onlineServers) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      if (s.getAddress().equals(serverName.getAddress())) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        startCode = s.getStartcode() + 1;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        break;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (startCode == -1) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    ServerName sn = ServerName.valueOf(serverName.getAddress().toString(), startCode);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  public void stop(String why) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    stopProcedureExecutor();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    this.assignmentManager.stop();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  private void startProcedureExecutor(final RSProcedureDispatcher remoteDispatcher)<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Configuration conf = getConfiguration();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    this.procedureStore = new NoopProcedureStore();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    this.procedureStore.registerListener(new ProcedureStoreListener() {<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>      @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      public void abortProcess() {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        abort("The Procedure Store lost the lease", null);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    });<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    this.procedureEnv = new MasterProcedureEnv(this,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>       remoteDispatcher != null ? remoteDispatcher : new RSProcedureDispatcher(this));<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    this.procedureExecutor = new ProcedureExecutor&lt;&gt;(conf, procedureEnv, procedureStore,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      procedureEnv.getProcedureScheduler());<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    final int numThreads = conf.getInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        Math.max(Runtime.getRuntime().availableProcessors(),<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          MasterProcedureConstants.DEFAULT_MIN_MASTER_PROCEDURE_THREADS));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    final boolean abortOnCorruption = conf.getBoolean(<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        MasterProcedureConstants.EXECUTOR_ABORT_ON_CORRUPTION,<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        MasterProcedureConstants.DEFAULT_EXECUTOR_ABORT_ON_CORRUPTION);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    this.procedureStore.start(numThreads);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    ProcedureTestingUtility.initAndStartWorkers(procedureExecutor, numThreads, abortOnCorruption);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    this.procedureEnv.getRemoteDispatcher().start();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private void stopProcedureExecutor() {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    if (this.procedureEnv != null) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      this.procedureEnv.getRemoteDispatcher().stop();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (this.procedureExecutor != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      this.procedureExecutor.stop();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    if (this.procedureStore != null) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      this.procedureStore.stop(isAborted());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  @Override<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public boolean isInitialized() {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    return true;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  public ProcedureEvent&lt;?&gt; getInitializedEvent() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    return this.initialized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public MasterFileSystem getMasterFileSystem() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return fileSystemManager;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>  @Override<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public MasterWalManager getMasterWalManager() {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return walManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @Override<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  public ProcedureExecutor&lt;MasterProcedureEnv&gt; getMasterProcedureExecutor() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return procedureExecutor;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Override<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public LoadBalancer getLoadBalancer() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return balancer;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public ServerManager getServerManager() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return serverManager;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  public AssignmentManager getAssignmentManager() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    return assignmentManager;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>  @Override<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  public TableStateManager getTableStateManager() {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return tableStateManager;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public Connection getConnection() {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    return this.connection;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public ServerName getServerName() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    return MOCK_MASTER_SERVERNAME;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public CoordinatedStateManager getCoordinatedStateManager() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return super.getCoordinatedStateManager();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  private static class MockRegionStateStore extends RegionStateStore {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    public MockRegionStateStore(final MasterServices master) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      super(master);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    public void updateRegionLocation(RegionStateNode regionNode) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  @Override<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public TableDescriptors getTableDescriptors() {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    return new TableDescriptors() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      @Override<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      public TableDescriptor remove(TableName tablename) throws IOException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        // noop<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return null;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>      @Override<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      public Map&lt;String, TableDescriptor&gt; getAll() throws IOException {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        // noop<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        return null;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>      @Override<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      public TableDescriptor get(TableName tablename) throws IOException {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tablename);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(DEFAULT_COLUMN_FAMILY_NAME));<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        return builder.build();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      @Override<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      public Map&lt;String, TableDescriptor&gt; getByNamespace(String name) throws IOException {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        return null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>      @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      public void add(TableDescriptor htd) throws IOException {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        // noop<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>      @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      public void setCacheOn() throws IOException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      public void setCacheOff() throws IOException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    };<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  private static MultiResponse buildMultiResponse(MultiRequest req) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    MultiResponse.Builder builder = MultiResponse.newBuilder();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    RegionActionResult.Builder regionActionResultBuilder =<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        RegionActionResult.newBuilder();<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    ResultOrException.Builder roeBuilder = ResultOrException.newBuilder();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (RegionAction regionAction: req.getRegionActionList()) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      regionActionResultBuilder.clear();<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      for (ClientProtos.Action action: regionAction.getActionList()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        roeBuilder.clear();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        roeBuilder.setResult(ClientProtos.Result.getDefaultInstance());<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        roeBuilder.setIndex(action.getIndex());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        regionActionResultBuilder.addResultOrException(roeBuilder.build());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      builder.addRegionActionResult(regionActionResultBuilder.build());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return builder.build();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>}<a name="line.363"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionAction;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionActionResult;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ResultOrException;<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 mocked master services.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * Tries to fake it. May not always work.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class MockMasterServices extends MockNoopMasterServices {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private final MasterFileSystem fileSystemManager;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private final MasterWalManager walManager;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private final AssignmentManager assignmentManager;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private final TableStateManager tableStateManager;<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private MasterProcedureEnv procedureEnv;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private ProcedureStore procedureStore;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final Connection connection;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  private final LoadBalancer balancer;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private final ServerManager serverManager;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static final String DEFAULT_COLUMN_FAMILY_NAME = "cf";<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final ServerName MOCK_MASTER_SERVERNAME =<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      ServerName.valueOf("mockmaster.example.org", 1234, -1L);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public MockMasterServices(Configuration conf,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      NavigableMap&lt;ServerName, SortedSet&lt;byte[]&gt;&gt; regionsToRegionServers) throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    super(conf);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    Superusers.initialize(conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this.walManager = new MasterWalManager(this);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    // Mock an AM.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    this.assignmentManager = new AssignmentManager(this, new MockRegionStateStore(this)) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      @Override<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      public boolean isTableEnabled(final TableName tableName) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        return true;<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>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public boolean isTableDisabled(final TableName tableName) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        return false;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    };<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.serverManager = new ServerManager(this);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.tableStateManager = Mockito.mock(TableStateManager.class);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    Mockito.when(this.tableStateManager.getTableState(Mockito.any())).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        thenReturn(new TableState(TableName.valueOf("AnyTableNameSetInMockMasterServcies"),<a name="line.119"></a>
+<span class="sourceLineNo">120</span>            TableState.State.ENABLED));<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    // Mock up a Client Interface<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    ClientProtos.ClientService.BlockingInterface ri =<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    MutateResponse.Builder builder = MutateResponse.newBuilder();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    builder.setProcessed(true);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    try {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      Mockito.when(ri.mutate(any(), any())).thenReturn(builder.build());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    } catch (ServiceException se) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throw ProtobufUtil.handleRemoteException(se);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    try {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      Mockito.when(ri.multi(any(), any())).thenAnswer(new Answer&lt;MultiResponse&gt;() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          @Override<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          public MultiResponse answer(InvocationOnMock invocation) throws Throwable {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            return buildMultiResponse(invocation.getArgument(1));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        });<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    } catch (ServiceException se) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      throw ProtobufUtil.getRemoteException(se);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    this.connection = HConnectionTestingUtility.getMockedConnection(getConfiguration());<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    // Set hbase.rootdir into test dir.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    Path rootdir = FSUtils.getRootDir(getConfiguration());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    FSUtils.setRootDir(getConfiguration(), rootdir);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void start(final int numServes, final RSProcedureDispatcher remoteDispatcher)<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throws IOException, KeeperException {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    startProcedureExecutor(remoteDispatcher);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    this.assignmentManager.start();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    for (int i = 0; i &lt; numServes; ++i) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      ServerName sn = ServerName.valueOf("localhost", 100 + i, 1);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    this.procedureExecutor.getEnvironment().setEventReady(initialized, true);<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>   * Call this restart method only after running MockMasterServices#start()<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * The RSs can be differentiated by the port number, see<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * ServerName in MockMasterServices#start() method above.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * Restart of region server will have new startcode in server name<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   *<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * @param serverName Server name to be restarted<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public void restartRegionServer(ServerName serverName) throws IOException {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    List&lt;ServerName&gt; onlineServers = serverManager.getOnlineServersList();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    long startCode = -1;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    for (ServerName s : onlineServers) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      if (s.getAddress().equals(serverName.getAddress())) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        startCode = s.getStartcode() + 1;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        break;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (startCode == -1) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    ServerName sn = ServerName.valueOf(serverName.getAddress().toString(), startCode);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Override<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void stop(String why) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    stopProcedureExecutor();<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    this.assignmentManager.stop();<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>  private void startProcedureExecutor(final RSProcedureDispatcher remoteDispatcher)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      throws IOException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    final Configuration conf = getConfiguration();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    this.procedureStore = new NoopProcedureStore();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    this.procedureStore.registerListener(new ProcedureStoreListener() {<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>      @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      public void abortProcess() {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        abort("The Procedure Store lost the lease", null);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    });<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    this.procedureEnv = new MasterProcedureEnv(this,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>       remoteDispatcher != null ? remoteDispatcher : new RSProcedureDispatcher(this));<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    this.procedureExecutor = new ProcedureExecutor&lt;&gt;(conf, procedureEnv, procedureStore,<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      procedureEnv.getProcedureScheduler());<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    final int numThreads = conf.getInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        Math.max(Runtime.getRuntime().availableProcessors(),<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          MasterProcedureConstants.DEFAULT_MIN_MASTER_PROCEDURE_THREADS));<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final boolean abortOnCorruption = conf.getBoolean(<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        MasterProcedureConstants.EXECUTOR_ABORT_ON_CORRUPTION,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        MasterProcedureConstants.DEFAULT_EXECUTOR_ABORT_ON_CORRUPTION);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this.procedureStore.start(numThreads);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    ProcedureTestingUtility.initAndStartWorkers(procedureExecutor, numThreads, abortOnCorruption);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.procedureEnv.getRemoteDispatcher().start();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private void stopProcedureExecutor() {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (this.procedureEnv != null) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      this.procedureEnv.getRemoteDispatcher().stop();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (this.procedureExecutor != null) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      this.procedureExecutor.stop();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>    if (this.procedureStore != null) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      this.procedureStore.stop(isAborted());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public boolean isInitialized() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return true;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public ProcedureEvent&lt;?&gt; getInitializedEvent() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return this.initialized;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public MasterFileSystem getMasterFileSystem() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return fileSystemManager;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  public MasterWalManager getMasterWalManager() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return walManager;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  public ProcedureExecutor&lt;MasterProcedureEnv&gt; getMasterProcedureExecutor() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    return procedureExecutor;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public LoadBalancer getLoadBalancer() {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return balancer;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public ServerManager getServerManager() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return serverManager;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public AssignmentManager getAssignmentManager() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return assignmentManager;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>  @Override<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  public TableStateManager getTableStateManager() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    return tableStateManager;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  @Override<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public Connection getConnection() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return this.connection;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public ServerName getServerName() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    return MOCK_MASTER_SERVERNAME;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public CoordinatedStateManager getCoordinatedStateManager() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    return super.getCoordinatedStateManager();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  private static class MockRegionStateStore extends RegionStateStore {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    public MockRegionStateStore(final MasterServices master) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      super(master);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    public void updateRegionLocation(RegionStateNode regionNode) throws IOException {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Override<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public TableDescriptors getTableDescriptors() {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    return new TableDescriptors() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      @Override<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      public TableDescriptor remove(TableName tablename) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        // noop<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        return null;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>      @Override<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      public Map&lt;String, TableDescriptor&gt; getAll() throws IOException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        // noop<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        return null;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>      @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      public TableDescriptor get(TableName tablename) throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tablename);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(DEFAULT_COLUMN_FAMILY_NAME));<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return builder.build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      public Map&lt;String, TableDescriptor&gt; getByNamespace(String name) throws IOException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        return null;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      @Override<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      public void add(TableDescriptor htd) throws IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        // noop<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>      @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      public void setCacheOn() throws IOException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      public void setCacheOff() throws IOException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    };<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private static MultiResponse buildMultiResponse(MultiRequest req) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    MultiResponse.Builder builder = MultiResponse.newBuilder();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    RegionActionResult.Builder regionActionResultBuilder =<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        RegionActionResult.newBuilder();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    ResultOrException.Builder roeBuilder = ResultOrException.newBuilder();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    for (RegionAction regionAction: req.getRegionActionList()) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      regionActionResultBuilder.clear();<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      for (ClientProtos.Action action: regionAction.getActionList()) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        roeBuilder.clear();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        roeBuilder.setResult(ClientProtos.Result.getDefaultInstance());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        roeBuilder.setIndex(action.getIndex());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        regionActionResultBuilder.addResultOrException(roeBuilder.build());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      builder.addRegionActionResult(regionActionResultBuilder.build());<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    return builder.build();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>}<a name="line.361"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
index 79a4648..b31d639 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
@@ -72,303 +72,301 @@
 <span class="sourceLineNo">064</span>import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;<a name="line.64"></a>
 <span class="sourceLineNo">065</span><a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionAction;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionActionResult;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ResultOrException;<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 mocked master services.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * Tries to fake it. May not always work.<a name="line.78"></a>
-<span class="sourceLineNo">079</span> */<a name="line.79"></a>
-<span class="sourceLineNo">080</span>public class MockMasterServices extends MockNoopMasterServices {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private final MasterFileSystem fileSystemManager;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private final MasterWalManager walManager;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private final AssignmentManager assignmentManager;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private final TableStateManager tableStateManager;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private MasterProcedureEnv procedureEnv;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private ProcedureStore procedureStore;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final Connection connection;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final LoadBalancer balancer;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final ServerManager serverManager;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public static final String DEFAULT_COLUMN_FAMILY_NAME = "cf";<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public static final ServerName MOCK_MASTER_SERVERNAME =<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      ServerName.valueOf("mockmaster.example.org", 1234, -1L);<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public MockMasterServices(Configuration conf,<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      NavigableMap&lt;ServerName, SortedSet&lt;byte[]&gt;&gt; regionsToRegionServers) throws IOException {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    super(conf);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    Superusers.initialize(conf);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.walManager = new MasterWalManager(this);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // Mock an AM.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    this.assignmentManager = new AssignmentManager(this, new MockRegionStateStore(this)) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      @Override<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      public boolean isTableEnabled(final TableName tableName) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        return true;<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>      @Override<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      public boolean isTableDisabled(final TableName tableName) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        return false;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    };<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.serverManager = new ServerManager(this);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.tableStateManager = Mockito.mock(TableStateManager.class);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Mockito.when(this.tableStateManager.getTableState(Mockito.any())).<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        thenReturn(new TableState(TableName.valueOf("AnyTableNameSetInMockMasterServcies"),<a name="line.120"></a>
-<span class="sourceLineNo">121</span>            TableState.State.ENABLED));<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // Mock up a Client Interface<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    ClientProtos.ClientService.BlockingInterface ri =<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    MutateResponse.Builder builder = MutateResponse.newBuilder();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    builder.setProcessed(true);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    try {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      Mockito.when(ri.mutate(any(), any())).thenReturn(builder.build());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    } catch (ServiceException se) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      throw ProtobufUtil.handleRemoteException(se);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    try {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      Mockito.when(ri.multi(any(), any())).thenAnswer(new Answer&lt;MultiResponse&gt;() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          @Override<a name="line.135"></a>
-<span class="sourceLineNo">136</span>          public MultiResponse answer(InvocationOnMock invocation) throws Throwable {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>            return buildMultiResponse(invocation.getArgument(1));<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>    } catch (ServiceException se) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      throw ProtobufUtil.getRemoteException(se);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    this.connection = HConnectionTestingUtility.getMockedConnection(getConfiguration());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    // Set hbase.rootdir into test dir.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    Path rootdir = FSUtils.getRootDir(getConfiguration());<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    FSUtils.setRootDir(getConfiguration(), rootdir);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    Mockito.mock(AdminProtos.AdminService.BlockingInterface.class);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public void start(final int numServes, final RSProcedureDispatcher remoteDispatcher)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      throws IOException, KeeperException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    startProcedureExecutor(remoteDispatcher);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    this.assignmentManager.start();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    for (int i = 0; i &lt; numServes; ++i) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      ServerName sn = ServerName.valueOf("localhost", 100 + i, 1);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    this.procedureExecutor.getEnvironment().setEventReady(initialized, true);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Call this restart method only after running MockMasterServices#start()<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * The RSs can be differentiated by the port number, see<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * ServerName in MockMasterServices#start() method above.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * Restart of region server will have new startcode in server name<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   *<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param serverName Server name to be restarted<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public void restartRegionServer(ServerName serverName) throws IOException {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    List&lt;ServerName&gt; onlineServers = serverManager.getOnlineServersList();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    long startCode = -1;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    for (ServerName s : onlineServers) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      if (s.getAddress().equals(serverName.getAddress())) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        startCode = s.getStartcode() + 1;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        break;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (startCode == -1) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    ServerName sn = ServerName.valueOf(serverName.getAddress().toString(), startCode);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  public void stop(String why) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    stopProcedureExecutor();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    this.assignmentManager.stop();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  private void startProcedureExecutor(final RSProcedureDispatcher remoteDispatcher)<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Configuration conf = getConfiguration();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    this.procedureStore = new NoopProcedureStore();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    this.procedureStore.registerListener(new ProcedureStoreListener() {<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>      @Override<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      public void abortProcess() {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        abort("The Procedure Store lost the lease", null);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    });<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    this.procedureEnv = new MasterProcedureEnv(this,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>       remoteDispatcher != null ? remoteDispatcher : new RSProcedureDispatcher(this));<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    this.procedureExecutor = new ProcedureExecutor&lt;&gt;(conf, procedureEnv, procedureStore,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      procedureEnv.getProcedureScheduler());<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    final int numThreads = conf.getInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        Math.max(Runtime.getRuntime().availableProcessors(),<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          MasterProcedureConstants.DEFAULT_MIN_MASTER_PROCEDURE_THREADS));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    final boolean abortOnCorruption = conf.getBoolean(<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        MasterProcedureConstants.EXECUTOR_ABORT_ON_CORRUPTION,<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        MasterProcedureConstants.DEFAULT_EXECUTOR_ABORT_ON_CORRUPTION);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    this.procedureStore.start(numThreads);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    ProcedureTestingUtility.initAndStartWorkers(procedureExecutor, numThreads, abortOnCorruption);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    this.procedureEnv.getRemoteDispatcher().start();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private void stopProcedureExecutor() {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    if (this.procedureEnv != null) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      this.procedureEnv.getRemoteDispatcher().stop();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (this.procedureExecutor != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      this.procedureExecutor.stop();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    if (this.procedureStore != null) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      this.procedureStore.stop(isAborted());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  @Override<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public boolean isInitialized() {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    return true;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  public ProcedureEvent&lt;?&gt; getInitializedEvent() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    return this.initialized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public MasterFileSystem getMasterFileSystem() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return fileSystemManager;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>  @Override<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public MasterWalManager getMasterWalManager() {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return walManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @Override<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  public ProcedureExecutor&lt;MasterProcedureEnv&gt; getMasterProcedureExecutor() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return procedureExecutor;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Override<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public LoadBalancer getLoadBalancer() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return balancer;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public ServerManager getServerManager() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return serverManager;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  public AssignmentManager getAssignmentManager() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    return assignmentManager;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>  @Override<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  public TableStateManager getTableStateManager() {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return tableStateManager;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public Connection getConnection() {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    return this.connection;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public ServerName getServerName() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    return MOCK_MASTER_SERVERNAME;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public CoordinatedStateManager getCoordinatedStateManager() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return super.getCoordinatedStateManager();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  private static class MockRegionStateStore extends RegionStateStore {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    public MockRegionStateStore(final MasterServices master) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      super(master);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    public void updateRegionLocation(RegionStateNode regionNode) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  @Override<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public TableDescriptors getTableDescriptors() {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    return new TableDescriptors() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      @Override<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      public TableDescriptor remove(TableName tablename) throws IOException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        // noop<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return null;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>      @Override<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      public Map&lt;String, TableDescriptor&gt; getAll() throws IOException {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        // noop<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        return null;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>      @Override<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      public TableDescriptor get(TableName tablename) throws IOException {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tablename);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(DEFAULT_COLUMN_FAMILY_NAME));<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        return builder.build();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      @Override<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      public Map&lt;String, TableDescriptor&gt; getByNamespace(String name) throws IOException {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        return null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>      @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      public void add(TableDescriptor htd) throws IOException {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        // noop<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>      @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      public void setCacheOn() throws IOException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      public void setCacheOff() throws IOException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    };<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  private static MultiResponse buildMultiResponse(MultiRequest req) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    MultiResponse.Builder builder = MultiResponse.newBuilder();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    RegionActionResult.Builder regionActionResultBuilder =<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        RegionActionResult.newBuilder();<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    ResultOrException.Builder roeBuilder = ResultOrException.newBuilder();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (RegionAction regionAction: req.getRegionActionList()) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      regionActionResultBuilder.clear();<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      for (ClientProtos.Action action: regionAction.getActionList()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        roeBuilder.clear();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        roeBuilder.setResult(ClientProtos.Result.getDefaultInstance());<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        roeBuilder.setIndex(action.getIndex());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        regionActionResultBuilder.addResultOrException(roeBuilder.build());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      builder.addRegionActionResult(regionActionResultBuilder.build());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return builder.build();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>}<a name="line.363"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionAction;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionActionResult;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ResultOrException;<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 mocked master services.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * Tries to fake it. May not always work.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class MockMasterServices extends MockNoopMasterServices {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private final MasterFileSystem fileSystemManager;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private final MasterWalManager walManager;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private final AssignmentManager assignmentManager;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private final TableStateManager tableStateManager;<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private MasterProcedureEnv procedureEnv;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private ProcedureStore procedureStore;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final Connection connection;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  private final LoadBalancer balancer;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private final ServerManager serverManager;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static final String DEFAULT_COLUMN_FAMILY_NAME = "cf";<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final ServerName MOCK_MASTER_SERVERNAME =<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      ServerName.valueOf("mockmaster.example.org", 1234, -1L);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public MockMasterServices(Configuration conf,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      NavigableMap&lt;ServerName, SortedSet&lt;byte[]&gt;&gt; regionsToRegionServers) throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    super(conf);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    Superusers.initialize(conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this.walManager = new MasterWalManager(this);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    // Mock an AM.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    this.assignmentManager = new AssignmentManager(this, new MockRegionStateStore(this)) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      @Override<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      public boolean isTableEnabled(final TableName tableName) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        return true;<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>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public boolean isTableDisabled(final TableName tableName) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        return false;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    };<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.serverManager = new ServerManager(this);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.tableStateManager = Mockito.mock(TableStateManager.class);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    Mockito.when(this.tableStateManager.getTableState(Mockito.any())).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        thenReturn(new TableState(TableName.valueOf("AnyTableNameSetInMockMasterServcies"),<a name="line.119"></a>
+<span class="sourceLineNo">120</span>            TableState.State.ENABLED));<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    // Mock up a Client Interface<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    ClientProtos.ClientService.BlockingInterface ri =<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    MutateResponse.Builder builder = MutateResponse.newBuilder();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    builder.setProcessed(true);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    try {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      Mockito.when(ri.mutate(any(), any())).thenReturn(builder.build());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    } catch (ServiceException se) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throw ProtobufUtil.handleRemoteException(se);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    try {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      Mockito.when(ri.multi(any(), any())).thenAnswer(new Answer&lt;MultiResponse&gt;() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          @Override<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          public MultiResponse answer(InvocationOnMock invocation) throws Throwable {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            return buildMultiResponse(invocation.getArgument(1));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        });<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    } catch (ServiceException se) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      throw ProtobufUtil.getRemoteException(se);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    this.connection = HConnectionTestingUtility.getMockedConnection(getConfiguration());<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    // Set hbase.rootdir into test dir.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    Path rootdir = FSUtils.getRootDir(getConfiguration());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    FSUtils.setRootDir(getConfiguration(), rootdir);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void start(final int numServes, final RSProcedureDispatcher remoteDispatcher)<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throws IOException, KeeperException {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    startProcedureExecutor(remoteDispatcher);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    this.assignmentManager.start();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    for (int i = 0; i &lt; numServes; ++i) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      ServerName sn = ServerName.valueOf("localhost", 100 + i, 1);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    this.procedureExecutor.getEnvironment().setEventReady(initialized, true);<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>   * Call this restart method only after running MockMasterServices#start()<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * The RSs can be differentiated by the port number, see<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * ServerName in MockMasterServices#start() method above.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * Restart of region server will have new startcode in server name<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   *<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * @param serverName Server name to be restarted<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public void restartRegionServer(ServerName serverName) throws IOException {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    List&lt;ServerName&gt; onlineServers = serverManager.getOnlineServersList();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    long startCode = -1;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    for (ServerName s : onlineServers) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      if (s.getAddress().equals(serverName.getAddress())) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        startCode = s.getStartcode() + 1;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        break;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (startCode == -1) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    ServerName sn = ServerName.valueOf(serverName.getAddress().toString(), startCode);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    serverManager.regionServerReport(sn, ServerMetricsBuilder.of(sn));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Override<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void stop(String why) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    stopProcedureExecutor();<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    this.assignmentManager.stop();<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>  private void startProcedureExecutor(final RSProcedureDispatcher remoteDispatcher)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      throws IOException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    final Configuration conf = getConfiguration();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    this.procedureStore = new NoopProcedureStore();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    this.procedureStore.registerListener(new ProcedureStoreListener() {<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>      @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      public void abortProcess() {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        abort("The Procedure Store lost the lease", null);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    });<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    this.procedureEnv = new MasterProcedureEnv(this,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>       remoteDispatcher != null ? remoteDispatcher : new RSProcedureDispatcher(this));<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    this.procedureExecutor = new ProcedureExecutor&lt;&gt;(conf, procedureEnv, procedureStore,<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      procedureEnv.getProcedureScheduler());<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    final int numThreads = conf.getInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        Math.max(Runtime.getRuntime().availableProcessors(),<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          MasterProcedureConstants.DEFAULT_MIN_MASTER_PROCEDURE_THREADS));<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final boolean abortOnCorruption = conf.getBoolean(<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        MasterProcedureConstants.EXECUTOR_ABORT_ON_CORRUPTION,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        MasterProcedureConstants.DEFAULT_EXECUTOR_ABORT_ON_CORRUPTION);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this.procedureStore.start(numThreads);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    ProcedureTestingUtility.initAndStartWorkers(procedureExecutor, numThreads, abortOnCorruption);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.procedureEnv.getRemoteDispatcher().start();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private void stopProcedureExecutor() {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (this.procedureEnv != null) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      this.procedureEnv.getRemoteDispatcher().stop();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (this.procedureExecutor != null) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      this.procedureExecutor.stop();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>    if (this.procedureStore != null) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      this.procedureStore.stop(isAborted());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public boolean isInitialized() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return true;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  public ProcedureEvent&lt;?&gt; getInitializedEvent() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return this.initialized;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public MasterFileSystem getMasterFileSystem() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return fileSystemManager;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  public MasterWalManager getMasterWalManager() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return walManager;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  public ProcedureExecutor&lt;MasterProcedureEnv&gt; getMasterProcedureExecutor() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    return procedureExecutor;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public LoadBalancer getLoadBalancer() {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return balancer;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public ServerManager getServerManager() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return serverManager;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public AssignmentManager getAssignmentManager() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return assignmentManager;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>  @Override<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  public TableStateManager getTableStateManager() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    return tableStateManager;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  @Override<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public Connection getConnection() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return this.connection;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public ServerName getServerName() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    return MOCK_MASTER_SERVERNAME;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public CoordinatedStateManager getCoordinatedStateManager() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    return super.getCoordinatedStateManager();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  private static class MockRegionStateStore extends RegionStateStore {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    public MockRegionStateStore(final MasterServices master) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      super(master);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    public void updateRegionLocation(RegionStateNode regionNode) throws IOException {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Override<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public TableDescriptors getTableDescriptors() {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    return new TableDescriptors() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      @Override<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      public TableDescriptor remove(TableName tablename) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        // noop<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        return null;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>      @Override<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      public Map&lt;String, TableDescriptor&gt; getAll() throws IOException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        // noop<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        return null;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>      @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      public TableDescriptor get(TableName tablename) throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tablename);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        builder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(DEFAULT_COLUMN_FAMILY_NAME));<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return builder.build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      public Map&lt;String, TableDescriptor&gt; getByNamespace(String name) throws IOException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        return null;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      @Override<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      public void add(TableDescriptor htd) throws IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        // noop<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>      @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      public void setCacheOn() throws IOException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      public void setCacheOff() throws IOException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    };<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private static MultiResponse buildMultiResponse(MultiRequest req) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    MultiResponse.Builder builder = MultiResponse.newBuilder();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    RegionActionResult.Builder regionActionResultBuilder =<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        RegionActionResult.newBuilder();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    ResultOrException.Builder roeBuilder = ResultOrException.newBuilder();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    for (RegionAction regionAction: req.getRegionActionList()) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      regionActionResultBuilder.clear();<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      for (ClientProtos.Action action: regionAction.getActionList()) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        roeBuilder.clear();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        roeBuilder.setResult(ClientProtos.Result.getDefaultInstance());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        roeBuilder.setIndex(action.getIndex());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        regionActionResultBuilder.addResultOrException(roeBuilder.build());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      builder.addRegionActionResult(regionActionResultBuilder.build());<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    return builder.build();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>}<a name="line.361"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html
index 6c7c043..77e06f5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.StartControllers.html
@@ -336,126 +336,125 @@
 <span class="sourceLineNo">328</span>      final ArrayList&lt;byte[]&gt; dataFromMembers) {<a name="line.328"></a>
 <span class="sourceLineNo">329</span>    ProcedureCoordinator coordinator = Mockito<a name="line.329"></a>
 <span class="sourceLineNo">330</span>        .mock(ProcedureCoordinator.class);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Mockito.mock(ProcedureCoordinator.class);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        prepared.countDown();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        return null;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }).when(coordinator).memberAcquiredBarrier(Mockito.eq(operationName), Mockito.anyString());<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        dataFromMembers.add(memberData);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        committed.countDown();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        return null;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }).when(coordinator).memberFinishedBarrier(Mockito.eq(operationName), Mockito.anyString(),<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      Mockito.eq(memberData));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    return coordinator;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Verify that the prepare, commit and abort nodes for the operation are removed from zookeeper<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private void verifyZooKeeperClean(String operationName, ZKWatcher watcher,<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      ZKProcedureUtil controller) throws Exception {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    String prepare = ZKProcedureUtil.getAcquireBarrierNode(controller, operationName);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    String commit = ZKProcedureUtil.getReachedBarrierNode(controller, operationName);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    String abort = ZKProcedureUtil.getAbortNode(controller, operationName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    assertEquals("Didn't delete prepare node", -1, ZKUtil.checkExists(watcher, prepare));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals("Didn't delete commit node", -1, ZKUtil.checkExists(watcher, commit));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals("Didn't delete abort node", -1, ZKUtil.checkExists(watcher, abort));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * Verify the cohort controller got called once per expected node to start the operation<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private void verifyCohort(ProcedureMember member, int cohortSize,<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      String operationName, byte[] data) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>//    verify(member, Mockito.times(cohortSize)).submitSubprocedure(Mockito.eq(operationName),<a name="line.369"></a>
-<span class="sourceLineNo">370</span>//      (byte[]) Mockito.argThat(new ArrayEquals(data)));<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    Mockito.verify(member,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      Mockito.atLeast(cohortSize)).submitSubprocedure(Mockito.any());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * Verify that the coordinator only got called once for each expected node<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private void verifyCoordinator(String operationName,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      ProcedureCoordinator coordinator, List&lt;String&gt; expected) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // verify that we got all the expected nodes<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (String node : expected) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      verify(coordinator, once).memberAcquiredBarrier(operationName, node);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      verify(coordinator, once).memberFinishedBarrier(operationName, node, memberData);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * Specify how the controllers that should be started (not spy/mockable) for the test.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private abstract class StartControllers {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    public abstract Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.392"></a>
-<span class="sourceLineNo">393</span>            ZKWatcher watcher, String operationName,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            ProcedureMember member, List&lt;String&gt; cohortNames) throws Exception;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final StartControllers startCoordinatorFirst = new StartControllers() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    @Override<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            ZKWatcher watcher, String operationName,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      // start the controller<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      controller.start(coordinator);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>      // make a cohort controller for each expected node<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      for (String nodeName : expected) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        cc.start(nodeName, member);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        cohortControllers.add(cc);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  };<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /**<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * Check for the possible race condition where a cohort member starts after the controller and<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * therefore could miss a new operation<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private final StartControllers startCohortFirst = new StartControllers() {<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    @Override<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            ZKWatcher watcher, String operationName,<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // make a cohort controller for each expected node<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      for (String nodeName : expected) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        cc.start(nodeName, member);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        cohortControllers.add(cc);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // start the controller<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      controller.start(coordinator);<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  };<a name="line.449"></a>
-<span class="sourceLineNo">450</span>}<a name="line.450"></a>
+<span class="sourceLineNo">331</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      @Override<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        prepared.countDown();<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        return null;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }).when(coordinator).memberAcquiredBarrier(Mockito.eq(operationName), Mockito.anyString());<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      @Override<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        dataFromMembers.add(memberData);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        committed.countDown();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        return null;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }).when(coordinator).memberFinishedBarrier(Mockito.eq(operationName), Mockito.anyString(),<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      Mockito.eq(memberData));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return coordinator;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Verify that the prepare, commit and abort nodes for the operation are removed from zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private void verifyZooKeeperClean(String operationName, ZKWatcher watcher,<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      ZKProcedureUtil controller) throws Exception {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    String prepare = ZKProcedureUtil.getAcquireBarrierNode(controller, operationName);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    String commit = ZKProcedureUtil.getReachedBarrierNode(controller, operationName);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    String abort = ZKProcedureUtil.getAbortNode(controller, operationName);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    assertEquals("Didn't delete prepare node", -1, ZKUtil.checkExists(watcher, prepare));<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    assertEquals("Didn't delete commit node", -1, ZKUtil.checkExists(watcher, commit));<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    assertEquals("Didn't delete abort node", -1, ZKUtil.checkExists(watcher, abort));<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Verify the cohort controller got called once per expected node to start the operation<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   */<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private void verifyCohort(ProcedureMember member, int cohortSize,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      String operationName, byte[] data) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>//    verify(member, Mockito.times(cohortSize)).submitSubprocedure(Mockito.eq(operationName),<a name="line.368"></a>
+<span class="sourceLineNo">369</span>//      (byte[]) Mockito.argThat(new ArrayEquals(data)));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Mockito.verify(member,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      Mockito.atLeast(cohortSize)).submitSubprocedure(Mockito.any());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  /**<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * Verify that the coordinator only got called once for each expected node<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private void verifyCoordinator(String operationName,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      ProcedureCoordinator coordinator, List&lt;String&gt; expected) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // verify that we got all the expected nodes<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (String node : expected) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      verify(coordinator, once).memberAcquiredBarrier(operationName, node);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      verify(coordinator, once).memberFinishedBarrier(operationName, node, memberData);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Specify how the controllers that should be started (not spy/mockable) for the test.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private abstract class StartControllers {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    public abstract Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.391"></a>
+<span class="sourceLineNo">392</span>            ZKWatcher watcher, String operationName,<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            ProcedureMember member, List&lt;String&gt; cohortNames) throws Exception;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private final StartControllers startCoordinatorFirst = new StartControllers() {<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>    @Override<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            ZKWatcher watcher, String operationName,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // start the controller<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      controller.start(coordinator);<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>      // make a cohort controller for each expected node<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      for (String nodeName : expected) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        cc.start(nodeName, member);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        cohortControllers.add(cc);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  };<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  /**<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * Check for the possible race condition where a cohort member starts after the controller and<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * therefore could miss a new operation<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private final StartControllers startCohortFirst = new StartControllers() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>    @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.428"></a>
+<span class="sourceLineNo">429</span>            ZKWatcher watcher, String operationName,<a name="line.429"></a>
+<span class="sourceLineNo">430</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>      // make a cohort controller for each expected node<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      for (String nodeName : expected) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        cc.start(nodeName, member);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        cohortControllers.add(cc);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>      // start the controller<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      controller.start(coordinator);<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  };<a name="line.448"></a>
+<span class="sourceLineNo">449</span>}<a name="line.449"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html
index 6c7c043..77e06f5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.html
@@ -336,126 +336,125 @@
 <span class="sourceLineNo">328</span>      final ArrayList&lt;byte[]&gt; dataFromMembers) {<a name="line.328"></a>
 <span class="sourceLineNo">329</span>    ProcedureCoordinator coordinator = Mockito<a name="line.329"></a>
 <span class="sourceLineNo">330</span>        .mock(ProcedureCoordinator.class);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Mockito.mock(ProcedureCoordinator.class);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        prepared.countDown();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        return null;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }).when(coordinator).memberAcquiredBarrier(Mockito.eq(operationName), Mockito.anyString());<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        dataFromMembers.add(memberData);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        committed.countDown();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        return null;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }).when(coordinator).memberFinishedBarrier(Mockito.eq(operationName), Mockito.anyString(),<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      Mockito.eq(memberData));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    return coordinator;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Verify that the prepare, commit and abort nodes for the operation are removed from zookeeper<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private void verifyZooKeeperClean(String operationName, ZKWatcher watcher,<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      ZKProcedureUtil controller) throws Exception {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    String prepare = ZKProcedureUtil.getAcquireBarrierNode(controller, operationName);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    String commit = ZKProcedureUtil.getReachedBarrierNode(controller, operationName);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    String abort = ZKProcedureUtil.getAbortNode(controller, operationName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    assertEquals("Didn't delete prepare node", -1, ZKUtil.checkExists(watcher, prepare));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals("Didn't delete commit node", -1, ZKUtil.checkExists(watcher, commit));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals("Didn't delete abort node", -1, ZKUtil.checkExists(watcher, abort));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * Verify the cohort controller got called once per expected node to start the operation<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private void verifyCohort(ProcedureMember member, int cohortSize,<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      String operationName, byte[] data) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>//    verify(member, Mockito.times(cohortSize)).submitSubprocedure(Mockito.eq(operationName),<a name="line.369"></a>
-<span class="sourceLineNo">370</span>//      (byte[]) Mockito.argThat(new ArrayEquals(data)));<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    Mockito.verify(member,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      Mockito.atLeast(cohortSize)).submitSubprocedure(Mockito.any());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * Verify that the coordinator only got called once for each expected node<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private void verifyCoordinator(String operationName,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      ProcedureCoordinator coordinator, List&lt;String&gt; expected) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // verify that we got all the expected nodes<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (String node : expected) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      verify(coordinator, once).memberAcquiredBarrier(operationName, node);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      verify(coordinator, once).memberFinishedBarrier(operationName, node, memberData);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * Specify how the controllers that should be started (not spy/mockable) for the test.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private abstract class StartControllers {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    public abstract Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.392"></a>
-<span class="sourceLineNo">393</span>            ZKWatcher watcher, String operationName,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            ProcedureMember member, List&lt;String&gt; cohortNames) throws Exception;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final StartControllers startCoordinatorFirst = new StartControllers() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    @Override<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            ZKWatcher watcher, String operationName,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      // start the controller<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      controller.start(coordinator);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>      // make a cohort controller for each expected node<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      for (String nodeName : expected) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        cc.start(nodeName, member);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        cohortControllers.add(cc);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  };<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /**<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * Check for the possible race condition where a cohort member starts after the controller and<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * therefore could miss a new operation<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private final StartControllers startCohortFirst = new StartControllers() {<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    @Override<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            ZKWatcher watcher, String operationName,<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // make a cohort controller for each expected node<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      for (String nodeName : expected) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        cc.start(nodeName, member);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        cohortControllers.add(cc);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // start the controller<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      controller.start(coordinator);<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  };<a name="line.449"></a>
-<span class="sourceLineNo">450</span>}<a name="line.450"></a>
+<span class="sourceLineNo">331</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      @Override<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        prepared.countDown();<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        return null;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }).when(coordinator).memberAcquiredBarrier(Mockito.eq(operationName), Mockito.anyString());<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Mockito.doAnswer(new Answer&lt;Void&gt;() {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      @Override<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        dataFromMembers.add(memberData);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        committed.countDown();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        return null;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }).when(coordinator).memberFinishedBarrier(Mockito.eq(operationName), Mockito.anyString(),<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      Mockito.eq(memberData));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return coordinator;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Verify that the prepare, commit and abort nodes for the operation are removed from zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private void verifyZooKeeperClean(String operationName, ZKWatcher watcher,<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      ZKProcedureUtil controller) throws Exception {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    String prepare = ZKProcedureUtil.getAcquireBarrierNode(controller, operationName);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    String commit = ZKProcedureUtil.getReachedBarrierNode(controller, operationName);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    String abort = ZKProcedureUtil.getAbortNode(controller, operationName);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    assertEquals("Didn't delete prepare node", -1, ZKUtil.checkExists(watcher, prepare));<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    assertEquals("Didn't delete commit node", -1, ZKUtil.checkExists(watcher, commit));<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    assertEquals("Didn't delete abort node", -1, ZKUtil.checkExists(watcher, abort));<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Verify the cohort controller got called once per expected node to start the operation<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   */<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private void verifyCohort(ProcedureMember member, int cohortSize,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      String operationName, byte[] data) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>//    verify(member, Mockito.times(cohortSize)).submitSubprocedure(Mockito.eq(operationName),<a name="line.368"></a>
+<span class="sourceLineNo">369</span>//      (byte[]) Mockito.argThat(new ArrayEquals(data)));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Mockito.verify(member,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      Mockito.atLeast(cohortSize)).submitSubprocedure(Mockito.any());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  /**<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * Verify that the coordinator only got called once for each expected node<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private void verifyCoordinator(String operationName,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      ProcedureCoordinator coordinator, List&lt;String&gt; expected) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // verify that we got all the expected nodes<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    for (String node : expected) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      verify(coordinator, once).memberAcquiredBarrier(operationName, node);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      verify(coordinator, once).memberFinishedBarrier(operationName, node, memberData);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Specify how the controllers that should be started (not spy/mockable) for the test.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private abstract class StartControllers {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    public abstract Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.391"></a>
+<span class="sourceLineNo">392</span>            ZKWatcher watcher, String operationName,<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            ProcedureMember member, List&lt;String&gt; cohortNames) throws Exception;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private final StartControllers startCoordinatorFirst = new StartControllers() {<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>    @Override<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            ZKWatcher watcher, String operationName,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // start the controller<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      controller.start(coordinator);<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>      // make a cohort controller for each expected node<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      for (String nodeName : expected) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        cc.start(nodeName, member);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        cohortControllers.add(cc);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  };<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  /**<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * Check for the possible race condition where a cohort member starts after the controller and<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * therefore could miss a new operation<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private final StartControllers startCohortFirst = new StartControllers() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>    @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    public Pair&lt;ZKProcedureCoordinator, List&lt;ZKProcedureMemberRpcs&gt;&gt; start(<a name="line.428"></a>
+<span class="sourceLineNo">429</span>            ZKWatcher watcher, String operationName,<a name="line.429"></a>
+<span class="sourceLineNo">430</span>            ProcedureCoordinator coordinator, String controllerName,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>            ProcedureMember member, List&lt;String&gt; expected) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>      // make a cohort controller for each expected node<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      List&lt;ZKProcedureMemberRpcs&gt; cohortControllers = new ArrayList&lt;&gt;();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      for (String nodeName : expected) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        ZKProcedureMemberRpcs cc = new ZKProcedureMemberRpcs(watcher, operationName);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        cc.start(nodeName, member);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        cohortControllers.add(cc);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>      // start the controller<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      ZKProcedureCoordinator controller = new ZKProcedureCoordinator(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          watcher, operationName, CONTROLLER_NODE_NAME);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      controller.start(coordinator);<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>      return new Pair&lt;&gt;(controller, cohortControllers);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  };<a name="line.448"></a>
+<span class="sourceLineNo">449</span>}<a name="line.449"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html
new file mode 100644
index 0000000..803b079
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestClientTokenUtil.html
@@ -0,0 +1,174 @@
+<!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.security.token;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.assertFalse;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertSame;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.fail;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.lang.reflect.Field;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.net.URL;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.net.URLClassLoader;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.CompletableFuture;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.ExecutionException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.AsyncConnection;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.After;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.junit.Before;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.junit.ClassRule;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.Test;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.experimental.categories.Category;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.com.google.common.io.Closeables;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>@Category(SmallTests.class)<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class TestClientTokenUtil {<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @ClassRule<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    HBaseClassTestRule.forClass(TestClientTokenUtil.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private URLClassLoader cl;<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  @Before<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public void setUp() {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    URL urlPU = ProtobufUtil.class.getProtectionDomain().getCodeSource().getLocation();<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    URL urlCTU = ClientTokenUtil.class.getProtectionDomain().getCodeSource().getLocation();<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    cl = new URLClassLoader(new URL[] { urlPU, urlCTU }, getClass().getClassLoader());<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  }<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  @After<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public void tearDown() throws IOException {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    Closeables.close(cl, true);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @Test<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public void testObtainToken() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    Throwable injected = new com.google.protobuf.ServiceException("injected");<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    Class&lt;?&gt; clientTokenUtil = cl.loadClass(ClientTokenUtil.class.getCanonicalName());<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    Field shouldInjectFault = clientTokenUtil.getDeclaredField("injectedException");<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    shouldInjectFault.setAccessible(true);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    shouldInjectFault.set(null, injected);<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    try {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      ClientTokenUtil.obtainToken((Connection)null);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      fail("Should have injected exception.");<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    } catch (IOException e) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      Throwable t = e;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      boolean serviceExceptionFound = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      while ((t = t.getCause()) != null) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        if (t == injected) { // reference equality<a name="line.81"></a>
+<span class="sourceLineNo">082</span>          serviceExceptionFound = true;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          break;<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>
+<span class="sourceLineNo">086</span>      if (!serviceExceptionFound) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>        throw e; // wrong exception, fail the test<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    CompletableFuture&lt;?&gt; future = ClientTokenUtil.obtainToken((AsyncConnection)null);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    try {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      future.get();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      fail("Should have injected exception.");<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    } catch (ExecutionException e) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      assertSame(injected, e.getCause());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    Boolean loaded = (Boolean) cl.loadClass(ProtobufUtil.class.getCanonicalName())<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      .getDeclaredMethod("isClassLoaderLoaded").invoke(null);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    assertFalse("Should not have loaded DynamicClassLoader", loaded);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>}<a name="line.102"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html
index 52b1285..fe162d3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestDelegationTokenWithEncryption.html
@@ -75,7 +75,7 @@
 <span class="sourceLineNo">067</span>    TEST_UTIL.getConfiguration().set("hbase.rpc.protection", "privacy");<a name="line.67"></a>
 <span class="sourceLineNo">068</span>    SecureTestCluster.setUp();<a name="line.68"></a>
 <span class="sourceLineNo">069</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      Token&lt;? extends TokenIdentifier&gt; token = TokenUtil.obtainToken(conn);<a name="line.70"></a>
+<span class="sourceLineNo">070</span>      Token&lt;? extends TokenIdentifier&gt; token = ClientTokenUtil.obtainToken(conn);<a name="line.70"></a>
 <span class="sourceLineNo">071</span>      UserGroupInformation.getCurrentUser().addToken(token);<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>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html
index 5e4d058..c412d8f 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestGenerateDelegationToken.html
@@ -78,7 +78,7 @@
 <span class="sourceLineNo">070</span>  public static void setUp() throws Exception {<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    SecureTestCluster.setUp();<a name="line.71"></a>
 <span class="sourceLineNo">072</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      Token&lt;? extends TokenIdentifier&gt; token = TokenUtil.obtainToken(conn);<a name="line.73"></a>
+<span class="sourceLineNo">073</span>      Token&lt;? extends TokenIdentifier&gt; token = ClientTokenUtil.obtainToken(conn);<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      UserGroupInformation.getCurrentUser().addToken(token);<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>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html
deleted file mode 100644
index b5d6563..0000000
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/token/TestTokenUtil.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!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.security.token;<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.junit.Assert.assertFalse;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.junit.Assert.assertSame;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.fail;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.lang.reflect.Field;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.lang.reflect.InvocationTargetException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.net.URL;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.net.URLClassLoader;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.CompletableFuture;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.concurrent.ExecutionException;<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.client.AsyncConnection;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Connection;<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.io.Closeables;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>@Category(SmallTests.class)<a name="line.45"></a>
-<span class="sourceLineNo">046</span>public class TestTokenUtil {<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  @ClassRule<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    HBaseClassTestRule.forClass(TestTokenUtil.class);<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private URLClassLoader cl;<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  @Before<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public void setUp() {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    URL urlPU = ProtobufUtil.class.getProtectionDomain().getCodeSource().getLocation();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    URL urlTU = TokenUtil.class.getProtectionDomain().getCodeSource().getLocation();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    cl = new URLClassLoader(new URL[] { urlPU, urlTU }, getClass().getClassLoader());<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @After<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public void tearDown() throws IOException {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    Closeables.close(cl, true);<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @Test<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public void testObtainToken() throws Exception {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    Throwable injected = new com.google.protobuf.ServiceException("injected");<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>    Class&lt;?&gt; tokenUtil = cl.loadClass(TokenUtil.class.getCanonicalName());<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    Field shouldInjectFault = tokenUtil.getDeclaredField("injectedException");<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    shouldInjectFault.setAccessible(true);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    shouldInjectFault.set(null, injected);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>    try {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      tokenUtil.getMethod("obtainToken", Connection.class).invoke(null, new Object[] { null });<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      fail("Should have injected exception.");<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    } catch (InvocationTargetException e) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      Throwable t = e;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      boolean serviceExceptionFound = false;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      while ((t = t.getCause()) != null) {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>        if (t == injected) { // reference equality<a name="line.82"></a>
-<span class="sourceLineNo">083</span>          serviceExceptionFound = true;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          break;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      if (!serviceExceptionFound) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>        throw e; // wrong exception, fail the test<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    CompletableFuture&lt;?&gt; future = (CompletableFuture&lt;?&gt;) tokenUtil<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      .getMethod("obtainToken", AsyncConnection.class).invoke(null, new Object[] { null });<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    try {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      future.get();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      fail("Should have injected exception.");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    } catch (ExecutionException e) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      assertSame(injected, e.getCause());<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    Boolean loaded = (Boolean) cl.loadClass(ProtobufUtil.class.getCanonicalName())<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      .getDeclaredMethod("isClassLoaderLoaded").invoke(null);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    assertFalse("Should not have loaded DynamicClassLoader", loaded);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>}<a name="line.104"></a>
-
-
-
... 61 lines suppressed ...