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/10/15 14:42:55 UTC

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

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 904a8ad  Published site at 7924ba39e7ce573369deda84f55e2a0e6ecb4872.
904a8ad is described below

commit 904a8ade18e72f61b469e6139473555f0ab51d6b
Author: jenkins <bu...@apache.org>
AuthorDate: Tue Oct 15 14:42:43 2019 +0000

    Published site at 7924ba39e7ce573369deda84f55e2a0e6ecb4872.
---
 acid-semantics.html                                |   2 +-
 apache_hbase_reference_guide.pdf                   |   4 +-
 book.html                                          |   2 +-
 bulk-loads.html                                    |   2 +-
 checkstyle-aggregate.html                          |   2 +-
 coc.html                                           |   2 +-
 dependencies.html                                  |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/constant-values.html                    |   4 +-
 .../hbase/client/AsyncNonMetaRegionLocator.html    |  16 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |   4 +-
 .../AsyncNonMetaRegionLocator.LocateRequest.html   | 193 +++++++++++----------
 .../AsyncNonMetaRegionLocator.TableCache.html      | 193 +++++++++++----------
 .../hbase/client/AsyncNonMetaRegionLocator.html    | 193 +++++++++++----------
 downloads.html                                     |   2 +-
 export_control.html                                |   2 +-
 index.html                                         |   2 +-
 issue-tracking.html                                |   2 +-
 mail-lists.html                                    |   2 +-
 metrics.html                                       |   2 +-
 old_news.html                                      |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 poweredbyhbase.html                                |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 project-summary.html                               |   2 +-
 pseudo-distributed.html                            |   2 +-
 replication.html                                   |   2 +-
 resources.html                                     |   2 +-
 source-repository.html                             |   2 +-
 sponsors.html                                      |   2 +-
 supportingprojects.html                            |   2 +-
 team-list.html                                     |   2 +-
 testdevapidocs/index-all.html                      |   2 +
 .../apache/hadoop/hbase/backup/package-tree.html   |   2 +-
 .../client/TestAsyncNonMetaRegionLocator.html      |  40 +++--
 .../apache/hadoop/hbase/io/hfile/package-tree.html |   2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |  10 +-
 .../hadoop/hbase/procedure/package-tree.html       |   8 +-
 .../hadoop/hbase/procedure2/package-tree.html      |   2 +-
 .../hadoop/hbase/regionserver/package-tree.html    |   4 +-
 .../org/apache/hadoop/hbase/test/package-tree.html |   6 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |   2 +-
 .../client/TestAsyncNonMetaRegionLocator.html      |  12 +-
 47 files changed, 397 insertions(+), 358 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 439dff4..2432bd6 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -443,7 +443,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 c43c974..7680ca6 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:20191014144245+00'00')
-/CreationDate (D:20191014144245+00'00')
+/ModDate (D:20191015143939+00'00')
+/CreationDate (D:20191015143939+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index bfb261b..0f9d87b 100644
--- a/book.html
+++ b/book.html
@@ -43835,7 +43835,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-10-14 14:32:00 UTC
+Last updated 2019-10-15 14:29:53 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 742f115..da8ce31 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -148,7 +148,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 74afadb..221f958 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -92756,7 +92756,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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/coc.html b/coc.html
index a07884b..53941a5 100644
--- a/coc.html
+++ b/coc.html
@@ -217,7 +217,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 3bc1478..0f4baf5 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -289,7 +289,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 8610f89..4d03157 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -534,7 +534,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 79d5991..84cb0e7 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -170,7 +170,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 869780d..1d201b8 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -898,7 +898,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 676963c..18121b1 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -4039,14 +4039,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>"Mon Oct 14 14:38:46 UTC 2019"</code></td>
+<td class="colLast"><code>"Tue Oct 15 14:35:19 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>"6aec958d66fe88be8cbc175f52162645d22e996f"</code></td>
+<td class="colLast"><code>"7924ba39e7ce573369deda84f55e2a0e6ecb4872"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
diff --git a/devapidocs/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html b/devapidocs/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html
index 0549d1f..7cf80b4 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html
@@ -662,7 +662,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addLocationToCache</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.592">addLocationToCache</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.595">addLocationToCache</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc)</pre>
 </li>
 </ul>
 <a name="getCachedLocation-org.apache.hadoop.hbase.HRegionLocation-">
@@ -671,7 +671,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedLocation</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.596">getCachedLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.599">getCachedLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc)</pre>
 </li>
 </ul>
 <a name="updateCachedLocationOnError-org.apache.hadoop.hbase.HRegionLocation-java.lang.Throwable-">
@@ -680,7 +680,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCachedLocationOnError</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.605">updateCachedLocationOnError</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.608">updateCachedLocationOnError</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;exception)</pre>
 </li>
 </ul>
@@ -690,7 +690,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCache</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.611">clearCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.614">clearCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="clearCache--">
@@ -699,7 +699,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCache</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.626">clearCache</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.629">clearCache</a>()</pre>
 </li>
 </ul>
 <a name="clearCache-org.apache.hadoop.hbase.ServerName-">
@@ -708,7 +708,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCache</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.630">clearCache</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.633">clearCache</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="getRegionLocationInCache-org.apache.hadoop.hbase.TableName-byte:A-">
@@ -717,7 +717,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocationInCache</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.650">getRegionLocationInCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.653">getRegionLocationInCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                          byte[]&nbsp;row)</pre>
 </li>
 </ul>
@@ -727,7 +727,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNumberOfCachedRegionLocations</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.660">getNumberOfCachedRegionLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.663">getNumberOfCachedRegionLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 85a7a96..e5ff32f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <span class="sourceLineNo">010</span>  justification="Intentional; to be modified in test")<a name="line.10"></a>
 <span class="sourceLineNo">011</span>public class Version {<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String version = new String("3.0.0-SNAPSHOT");<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String revision = "6aec958d66fe88be8cbc175f52162645d22e996f";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String revision = "7924ba39e7ce573369deda84f55e2a0e6ecb4872";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String user = "jenkins";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String date = "Mon Oct 14 14:38:46 UTC 2019";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String date = "Tue Oct 15 14:35:19 UTC 2019";<a name="line.15"></a>
 <span class="sourceLineNo">016</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.16"></a>
 <span class="sourceLineNo">017</span>  public static final String srcChecksum = "(stdin)=";<a name="line.17"></a>
 <span class="sourceLineNo">018</span>}<a name="line.18"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.LocateRequest.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.LocateRequest.html
index ed2a642..ef75628 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.LocateRequest.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.LocateRequest.html
@@ -578,101 +578,104 @@
 <span class="sourceLineNo">570</span>    byte[] startKey = loc.getRegion().getStartKey();<a name="line.570"></a>
 <span class="sourceLineNo">571</span>    for (;;) {<a name="line.571"></a>
 <span class="sourceLineNo">572</span>      RegionLocations oldLocs = tableCache.cache.get(startKey);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      HRegionLocation oldLoc = oldLocs.getRegionLocation(loc.getRegion().getReplicaId());<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      if (!canUpdateOnError(loc, oldLoc)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        return;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      RegionLocations newLocs = removeRegionLocation(oldLocs, loc.getRegion().getReplicaId());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (newLocs == null) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        if (tableCache.cache.remove(startKey, oldLocs)) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          recordClearRegionCache();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          return;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      } else {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        if (tableCache.cache.replace(startKey, oldLocs, newLocs)) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          recordClearRegionCache();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          return;<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>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private void addLocationToCache(HRegionLocation loc) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    addToCache(getTableCache(loc.getRegion().getTable()), createRegionLocations(loc));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private HRegionLocation getCachedLocation(HRegionLocation loc) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    TableCache tableCache = cache.get(loc.getRegion().getTable());<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    if (tableCache == null) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      return null;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    RegionLocations locs = tableCache.cache.get(loc.getRegion().getStartKey());<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    return locs != null ? locs.getRegionLocation(loc.getRegion().getReplicaId()) : null;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>  }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>  void updateCachedLocationOnError(HRegionLocation loc, Throwable exception) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    Optional&lt;MetricsConnection&gt; connectionMetrics = conn.getConnectionMetrics();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    AsyncRegionLocatorHelper.updateCachedLocationOnError(loc, exception, this::getCachedLocation,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      this::addLocationToCache, this::removeLocationFromCache, connectionMetrics.orElse(null));<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>  void clearCache(TableName tableName) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    TableCache tableCache = cache.remove(tableName);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    if (tableCache == null) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      return;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    synchronized (tableCache) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      if (!tableCache.allRequests.isEmpty()) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        IOException error = new IOException("Cache cleared");<a name="line.618"></a>
-<span class="sourceLineNo">619</span>        tableCache.allRequests.values().forEach(f -&gt; f.completeExceptionally(error));<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      }<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    }<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    conn.getConnectionMetrics()<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      .ifPresent(metrics -&gt; metrics.incrMetaCacheNumClearRegion(tableCache.cache.size()));<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>  void clearCache() {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    cache.clear();<a name="line.627"></a>
-<span class="sourceLineNo">628</span>  }<a name="line.628"></a>
-<span class="sourceLineNo">629</span><a name="line.629"></a>
-<span class="sourceLineNo">630</span>  void clearCache(ServerName serverName) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    for (TableCache tableCache : cache.values()) {<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      for (Map.Entry&lt;byte[], RegionLocations&gt; entry : tableCache.cache.entrySet()) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        byte[] regionName = entry.getKey();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>        RegionLocations locs = entry.getValue();<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        RegionLocations newLocs = locs.removeByServer(serverName);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        if (locs == newLocs) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>          continue;<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        }<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        if (newLocs.isEmpty()) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          tableCache.cache.remove(regionName, locs);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        } else {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          tableCache.cache.replace(regionName, locs, newLocs);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      }<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>  // only used for testing whether we have cached the location for a region.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  @VisibleForTesting<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  RegionLocations getRegionLocationInCache(TableName tableName, byte[] row) {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    TableCache tableCache = cache.get(tableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    if (tableCache == null) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      return null;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    return locateRowInCache(tableCache, tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>  // only used for testing whether we have cached the location for a table.<a name="line.658"></a>
-<span class="sourceLineNo">659</span>  @VisibleForTesting<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  int getNumberOfCachedRegionLocations(TableName tableName) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    TableCache tableCache = cache.get(tableName);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if (tableCache == null) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      return 0;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    return tableCache.cache.values().stream().mapToInt(RegionLocations::numNonNullElements).sum();<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>}<a name="line.667"></a>
+<span class="sourceLineNo">573</span>      if (oldLocs == null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        return;<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      HRegionLocation oldLoc = oldLocs.getRegionLocation(loc.getRegion().getReplicaId());<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      if (!canUpdateOnError(loc, oldLoc)) {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        return;<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      }<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      RegionLocations newLocs = removeRegionLocation(oldLocs, loc.getRegion().getReplicaId());<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      if (newLocs == null) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        if (tableCache.cache.remove(startKey, oldLocs)) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>          recordClearRegionCache();<a name="line.583"></a>
+<span class="sourceLineNo">584</span>          return;<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        }<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        if (tableCache.cache.replace(startKey, oldLocs, newLocs)) {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>          recordClearRegionCache();<a name="line.588"></a>
+<span class="sourceLineNo">589</span>          return;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>        }<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
+<span class="sourceLineNo">594</span><a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private void addLocationToCache(HRegionLocation loc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    addToCache(getTableCache(loc.getRegion().getTable()), createRegionLocations(loc));<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  private HRegionLocation getCachedLocation(HRegionLocation loc) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    TableCache tableCache = cache.get(loc.getRegion().getTable());<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    if (tableCache == null) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      return null;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    RegionLocations locs = tableCache.cache.get(loc.getRegion().getStartKey());<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    return locs != null ? locs.getRegionLocation(loc.getRegion().getReplicaId()) : null;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  void updateCachedLocationOnError(HRegionLocation loc, Throwable exception) {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    Optional&lt;MetricsConnection&gt; connectionMetrics = conn.getConnectionMetrics();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    AsyncRegionLocatorHelper.updateCachedLocationOnError(loc, exception, this::getCachedLocation,<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this::addLocationToCache, this::removeLocationFromCache, connectionMetrics.orElse(null));<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>  void clearCache(TableName tableName) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    TableCache tableCache = cache.remove(tableName);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    if (tableCache == null) {<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      return;<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    synchronized (tableCache) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (!tableCache.allRequests.isEmpty()) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        IOException error = new IOException("Cache cleared");<a name="line.621"></a>
+<span class="sourceLineNo">622</span>        tableCache.allRequests.values().forEach(f -&gt; f.completeExceptionally(error));<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      }<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    conn.getConnectionMetrics()<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      .ifPresent(metrics -&gt; metrics.incrMetaCacheNumClearRegion(tableCache.cache.size()));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>  void clearCache() {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    cache.clear();<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  void clearCache(ServerName serverName) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    for (TableCache tableCache : cache.values()) {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>      for (Map.Entry&lt;byte[], RegionLocations&gt; entry : tableCache.cache.entrySet()) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>        byte[] regionName = entry.getKey();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>        RegionLocations locs = entry.getValue();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>        RegionLocations newLocs = locs.removeByServer(serverName);<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        if (locs == newLocs) {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>          continue;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        if (newLocs.isEmpty()) {<a name="line.642"></a>
+<span class="sourceLineNo">643</span>          tableCache.cache.remove(regionName, locs);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>        } else {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          tableCache.cache.replace(regionName, locs, newLocs);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        }<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    }<a name="line.648"></a>
+<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span>  // only used for testing whether we have cached the location for a region.<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  @VisibleForTesting<a name="line.652"></a>
+<span class="sourceLineNo">653</span>  RegionLocations getRegionLocationInCache(TableName tableName, byte[] row) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    TableCache tableCache = cache.get(tableName);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    if (tableCache == null) {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      return null;<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    return locateRowInCache(tableCache, tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  // only used for testing whether we have cached the location for a table.<a name="line.661"></a>
+<span class="sourceLineNo">662</span>  @VisibleForTesting<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  int getNumberOfCachedRegionLocations(TableName tableName) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    TableCache tableCache = cache.get(tableName);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    if (tableCache == null) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      return 0;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    return tableCache.cache.values().stream().mapToInt(RegionLocations::numNonNullElements).sum();<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>}<a name="line.670"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.TableCache.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.TableCache.html
index ed2a642..ef75628 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.TableCache.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.TableCache.html
@@ -578,101 +578,104 @@
 <span class="sourceLineNo">570</span>    byte[] startKey = loc.getRegion().getStartKey();<a name="line.570"></a>
 <span class="sourceLineNo">571</span>    for (;;) {<a name="line.571"></a>
 <span class="sourceLineNo">572</span>      RegionLocations oldLocs = tableCache.cache.get(startKey);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      HRegionLocation oldLoc = oldLocs.getRegionLocation(loc.getRegion().getReplicaId());<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      if (!canUpdateOnError(loc, oldLoc)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        return;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      RegionLocations newLocs = removeRegionLocation(oldLocs, loc.getRegion().getReplicaId());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (newLocs == null) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        if (tableCache.cache.remove(startKey, oldLocs)) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          recordClearRegionCache();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          return;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      } else {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        if (tableCache.cache.replace(startKey, oldLocs, newLocs)) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          recordClearRegionCache();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          return;<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>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private void addLocationToCache(HRegionLocation loc) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    addToCache(getTableCache(loc.getRegion().getTable()), createRegionLocations(loc));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private HRegionLocation getCachedLocation(HRegionLocation loc) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    TableCache tableCache = cache.get(loc.getRegion().getTable());<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    if (tableCache == null) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      return null;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    RegionLocations locs = tableCache.cache.get(loc.getRegion().getStartKey());<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    return locs != null ? locs.getRegionLocation(loc.getRegion().getReplicaId()) : null;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>  }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>  void updateCachedLocationOnError(HRegionLocation loc, Throwable exception) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    Optional&lt;MetricsConnection&gt; connectionMetrics = conn.getConnectionMetrics();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    AsyncRegionLocatorHelper.updateCachedLocationOnError(loc, exception, this::getCachedLocation,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      this::addLocationToCache, this::removeLocationFromCache, connectionMetrics.orElse(null));<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>  void clearCache(TableName tableName) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    TableCache tableCache = cache.remove(tableName);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    if (tableCache == null) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      return;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    synchronized (tableCache) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      if (!tableCache.allRequests.isEmpty()) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        IOException error = new IOException("Cache cleared");<a name="line.618"></a>
-<span class="sourceLineNo">619</span>        tableCache.allRequests.values().forEach(f -&gt; f.completeExceptionally(error));<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      }<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    }<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    conn.getConnectionMetrics()<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      .ifPresent(metrics -&gt; metrics.incrMetaCacheNumClearRegion(tableCache.cache.size()));<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>  void clearCache() {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    cache.clear();<a name="line.627"></a>
-<span class="sourceLineNo">628</span>  }<a name="line.628"></a>
-<span class="sourceLineNo">629</span><a name="line.629"></a>
-<span class="sourceLineNo">630</span>  void clearCache(ServerName serverName) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    for (TableCache tableCache : cache.values()) {<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      for (Map.Entry&lt;byte[], RegionLocations&gt; entry : tableCache.cache.entrySet()) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        byte[] regionName = entry.getKey();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>        RegionLocations locs = entry.getValue();<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        RegionLocations newLocs = locs.removeByServer(serverName);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        if (locs == newLocs) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>          continue;<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        }<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        if (newLocs.isEmpty()) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          tableCache.cache.remove(regionName, locs);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        } else {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          tableCache.cache.replace(regionName, locs, newLocs);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      }<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>  // only used for testing whether we have cached the location for a region.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  @VisibleForTesting<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  RegionLocations getRegionLocationInCache(TableName tableName, byte[] row) {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    TableCache tableCache = cache.get(tableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    if (tableCache == null) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      return null;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    return locateRowInCache(tableCache, tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>  // only used for testing whether we have cached the location for a table.<a name="line.658"></a>
-<span class="sourceLineNo">659</span>  @VisibleForTesting<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  int getNumberOfCachedRegionLocations(TableName tableName) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    TableCache tableCache = cache.get(tableName);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if (tableCache == null) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      return 0;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    return tableCache.cache.values().stream().mapToInt(RegionLocations::numNonNullElements).sum();<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>}<a name="line.667"></a>
+<span class="sourceLineNo">573</span>      if (oldLocs == null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        return;<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      HRegionLocation oldLoc = oldLocs.getRegionLocation(loc.getRegion().getReplicaId());<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      if (!canUpdateOnError(loc, oldLoc)) {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        return;<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      }<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      RegionLocations newLocs = removeRegionLocation(oldLocs, loc.getRegion().getReplicaId());<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      if (newLocs == null) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        if (tableCache.cache.remove(startKey, oldLocs)) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>          recordClearRegionCache();<a name="line.583"></a>
+<span class="sourceLineNo">584</span>          return;<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        }<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        if (tableCache.cache.replace(startKey, oldLocs, newLocs)) {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>          recordClearRegionCache();<a name="line.588"></a>
+<span class="sourceLineNo">589</span>          return;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>        }<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
+<span class="sourceLineNo">594</span><a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private void addLocationToCache(HRegionLocation loc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    addToCache(getTableCache(loc.getRegion().getTable()), createRegionLocations(loc));<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  private HRegionLocation getCachedLocation(HRegionLocation loc) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    TableCache tableCache = cache.get(loc.getRegion().getTable());<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    if (tableCache == null) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      return null;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    RegionLocations locs = tableCache.cache.get(loc.getRegion().getStartKey());<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    return locs != null ? locs.getRegionLocation(loc.getRegion().getReplicaId()) : null;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  void updateCachedLocationOnError(HRegionLocation loc, Throwable exception) {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    Optional&lt;MetricsConnection&gt; connectionMetrics = conn.getConnectionMetrics();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    AsyncRegionLocatorHelper.updateCachedLocationOnError(loc, exception, this::getCachedLocation,<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this::addLocationToCache, this::removeLocationFromCache, connectionMetrics.orElse(null));<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>  void clearCache(TableName tableName) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    TableCache tableCache = cache.remove(tableName);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    if (tableCache == null) {<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      return;<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    synchronized (tableCache) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (!tableCache.allRequests.isEmpty()) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        IOException error = new IOException("Cache cleared");<a name="line.621"></a>
+<span class="sourceLineNo">622</span>        tableCache.allRequests.values().forEach(f -&gt; f.completeExceptionally(error));<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      }<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    conn.getConnectionMetrics()<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      .ifPresent(metrics -&gt; metrics.incrMetaCacheNumClearRegion(tableCache.cache.size()));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>  void clearCache() {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    cache.clear();<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  void clearCache(ServerName serverName) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    for (TableCache tableCache : cache.values()) {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>      for (Map.Entry&lt;byte[], RegionLocations&gt; entry : tableCache.cache.entrySet()) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>        byte[] regionName = entry.getKey();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>        RegionLocations locs = entry.getValue();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>        RegionLocations newLocs = locs.removeByServer(serverName);<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        if (locs == newLocs) {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>          continue;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        if (newLocs.isEmpty()) {<a name="line.642"></a>
+<span class="sourceLineNo">643</span>          tableCache.cache.remove(regionName, locs);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>        } else {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          tableCache.cache.replace(regionName, locs, newLocs);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        }<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    }<a name="line.648"></a>
+<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span>  // only used for testing whether we have cached the location for a region.<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  @VisibleForTesting<a name="line.652"></a>
+<span class="sourceLineNo">653</span>  RegionLocations getRegionLocationInCache(TableName tableName, byte[] row) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    TableCache tableCache = cache.get(tableName);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    if (tableCache == null) {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      return null;<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    return locateRowInCache(tableCache, tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  // only used for testing whether we have cached the location for a table.<a name="line.661"></a>
+<span class="sourceLineNo">662</span>  @VisibleForTesting<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  int getNumberOfCachedRegionLocations(TableName tableName) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    TableCache tableCache = cache.get(tableName);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    if (tableCache == null) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      return 0;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    return tableCache.cache.values().stream().mapToInt(RegionLocations::numNonNullElements).sum();<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>}<a name="line.670"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html
index ed2a642..ef75628 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html
@@ -578,101 +578,104 @@
 <span class="sourceLineNo">570</span>    byte[] startKey = loc.getRegion().getStartKey();<a name="line.570"></a>
 <span class="sourceLineNo">571</span>    for (;;) {<a name="line.571"></a>
 <span class="sourceLineNo">572</span>      RegionLocations oldLocs = tableCache.cache.get(startKey);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      HRegionLocation oldLoc = oldLocs.getRegionLocation(loc.getRegion().getReplicaId());<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      if (!canUpdateOnError(loc, oldLoc)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        return;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      RegionLocations newLocs = removeRegionLocation(oldLocs, loc.getRegion().getReplicaId());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (newLocs == null) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        if (tableCache.cache.remove(startKey, oldLocs)) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          recordClearRegionCache();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          return;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      } else {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        if (tableCache.cache.replace(startKey, oldLocs, newLocs)) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          recordClearRegionCache();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          return;<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>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private void addLocationToCache(HRegionLocation loc) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    addToCache(getTableCache(loc.getRegion().getTable()), createRegionLocations(loc));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private HRegionLocation getCachedLocation(HRegionLocation loc) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    TableCache tableCache = cache.get(loc.getRegion().getTable());<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    if (tableCache == null) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      return null;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    RegionLocations locs = tableCache.cache.get(loc.getRegion().getStartKey());<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    return locs != null ? locs.getRegionLocation(loc.getRegion().getReplicaId()) : null;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>  }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>  void updateCachedLocationOnError(HRegionLocation loc, Throwable exception) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    Optional&lt;MetricsConnection&gt; connectionMetrics = conn.getConnectionMetrics();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    AsyncRegionLocatorHelper.updateCachedLocationOnError(loc, exception, this::getCachedLocation,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      this::addLocationToCache, this::removeLocationFromCache, connectionMetrics.orElse(null));<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>  void clearCache(TableName tableName) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    TableCache tableCache = cache.remove(tableName);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    if (tableCache == null) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      return;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    synchronized (tableCache) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      if (!tableCache.allRequests.isEmpty()) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        IOException error = new IOException("Cache cleared");<a name="line.618"></a>
-<span class="sourceLineNo">619</span>        tableCache.allRequests.values().forEach(f -&gt; f.completeExceptionally(error));<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      }<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    }<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    conn.getConnectionMetrics()<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      .ifPresent(metrics -&gt; metrics.incrMetaCacheNumClearRegion(tableCache.cache.size()));<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>  void clearCache() {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    cache.clear();<a name="line.627"></a>
-<span class="sourceLineNo">628</span>  }<a name="line.628"></a>
-<span class="sourceLineNo">629</span><a name="line.629"></a>
-<span class="sourceLineNo">630</span>  void clearCache(ServerName serverName) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    for (TableCache tableCache : cache.values()) {<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      for (Map.Entry&lt;byte[], RegionLocations&gt; entry : tableCache.cache.entrySet()) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        byte[] regionName = entry.getKey();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>        RegionLocations locs = entry.getValue();<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        RegionLocations newLocs = locs.removeByServer(serverName);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        if (locs == newLocs) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>          continue;<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        }<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        if (newLocs.isEmpty()) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          tableCache.cache.remove(regionName, locs);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        } else {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          tableCache.cache.replace(regionName, locs, newLocs);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      }<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>  // only used for testing whether we have cached the location for a region.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  @VisibleForTesting<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  RegionLocations getRegionLocationInCache(TableName tableName, byte[] row) {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    TableCache tableCache = cache.get(tableName);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    if (tableCache == null) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      return null;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    return locateRowInCache(tableCache, tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>  // only used for testing whether we have cached the location for a table.<a name="line.658"></a>
-<span class="sourceLineNo">659</span>  @VisibleForTesting<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  int getNumberOfCachedRegionLocations(TableName tableName) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    TableCache tableCache = cache.get(tableName);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if (tableCache == null) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      return 0;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    return tableCache.cache.values().stream().mapToInt(RegionLocations::numNonNullElements).sum();<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>}<a name="line.667"></a>
+<span class="sourceLineNo">573</span>      if (oldLocs == null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        return;<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      HRegionLocation oldLoc = oldLocs.getRegionLocation(loc.getRegion().getReplicaId());<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      if (!canUpdateOnError(loc, oldLoc)) {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        return;<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      }<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      RegionLocations newLocs = removeRegionLocation(oldLocs, loc.getRegion().getReplicaId());<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      if (newLocs == null) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        if (tableCache.cache.remove(startKey, oldLocs)) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>          recordClearRegionCache();<a name="line.583"></a>
+<span class="sourceLineNo">584</span>          return;<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        }<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        if (tableCache.cache.replace(startKey, oldLocs, newLocs)) {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>          recordClearRegionCache();<a name="line.588"></a>
+<span class="sourceLineNo">589</span>          return;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>        }<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
+<span class="sourceLineNo">594</span><a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private void addLocationToCache(HRegionLocation loc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    addToCache(getTableCache(loc.getRegion().getTable()), createRegionLocations(loc));<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  private HRegionLocation getCachedLocation(HRegionLocation loc) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    TableCache tableCache = cache.get(loc.getRegion().getTable());<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    if (tableCache == null) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      return null;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    RegionLocations locs = tableCache.cache.get(loc.getRegion().getStartKey());<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    return locs != null ? locs.getRegionLocation(loc.getRegion().getReplicaId()) : null;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  void updateCachedLocationOnError(HRegionLocation loc, Throwable exception) {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    Optional&lt;MetricsConnection&gt; connectionMetrics = conn.getConnectionMetrics();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    AsyncRegionLocatorHelper.updateCachedLocationOnError(loc, exception, this::getCachedLocation,<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this::addLocationToCache, this::removeLocationFromCache, connectionMetrics.orElse(null));<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>  void clearCache(TableName tableName) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    TableCache tableCache = cache.remove(tableName);<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    if (tableCache == null) {<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      return;<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    synchronized (tableCache) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (!tableCache.allRequests.isEmpty()) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        IOException error = new IOException("Cache cleared");<a name="line.621"></a>
+<span class="sourceLineNo">622</span>        tableCache.allRequests.values().forEach(f -&gt; f.completeExceptionally(error));<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      }<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    conn.getConnectionMetrics()<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      .ifPresent(metrics -&gt; metrics.incrMetaCacheNumClearRegion(tableCache.cache.size()));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>  void clearCache() {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    cache.clear();<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  void clearCache(ServerName serverName) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    for (TableCache tableCache : cache.values()) {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>      for (Map.Entry&lt;byte[], RegionLocations&gt; entry : tableCache.cache.entrySet()) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>        byte[] regionName = entry.getKey();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>        RegionLocations locs = entry.getValue();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>        RegionLocations newLocs = locs.removeByServer(serverName);<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        if (locs == newLocs) {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>          continue;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        if (newLocs.isEmpty()) {<a name="line.642"></a>
+<span class="sourceLineNo">643</span>          tableCache.cache.remove(regionName, locs);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>        } else {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          tableCache.cache.replace(regionName, locs, newLocs);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        }<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    }<a name="line.648"></a>
+<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span>  // only used for testing whether we have cached the location for a region.<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  @VisibleForTesting<a name="line.652"></a>
+<span class="sourceLineNo">653</span>  RegionLocations getRegionLocationInCache(TableName tableName, byte[] row) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    TableCache tableCache = cache.get(tableName);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    if (tableCache == null) {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      return null;<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    return locateRowInCache(tableCache, tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  // only used for testing whether we have cached the location for a table.<a name="line.661"></a>
+<span class="sourceLineNo">662</span>  @VisibleForTesting<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  int getNumberOfCachedRegionLocations(TableName tableName) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    TableCache tableCache = cache.get(tableName);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    if (tableCache == null) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      return 0;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    return tableCache.cache.values().stream().mapToInt(RegionLocations::numNonNullElements).sum();<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>}<a name="line.670"></a>
 
 
 
diff --git a/downloads.html b/downloads.html
index 7ba826e..ca2e8f2c 100644
--- a/downloads.html
+++ b/downloads.html
@@ -411,7 +411,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 fd4de70..601d6e1 100644
--- a/export_control.html
+++ b/export_control.html
@@ -173,7 +173,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 9e0ee65..4c2d875 100644
--- a/index.html
+++ b/index.html
@@ -251,7 +251,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 02c1d03..83d27da 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -145,7 +145,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 dc6427a..515349f 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -198,7 +198,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 6cbb794..1fcc046 100644
--- a/metrics.html
+++ b/metrics.html
@@ -301,7 +301,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 9d08d80..b28d4ca 100644
--- a/old_news.html
+++ b/old_news.html
@@ -292,7 +292,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 83cc2de..375bbe6 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -297,7 +297,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 5ed8995..c99e403 100644
--- a/plugins.html
+++ b/plugins.html
@@ -224,7 +224,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 f7ad404..96d2467 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -611,7 +611,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 74d2350..8fbcbb1 100644
--- a/project-info.html
+++ b/project-info.html
@@ -186,7 +186,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 3030f8d..37e1b1a 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -162,7 +162,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 445b361..e5864fd 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -188,7 +188,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 71cafba..02a881a 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -150,7 +150,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 1d65136..04cd5c0 100644
--- a/replication.html
+++ b/replication.html
@@ -145,7 +145,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 db7996c..9a9d079 100644
--- a/resources.html
+++ b/resources.html
@@ -173,7 +173,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 c76d7a3..3f1a895 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -156,7 +156,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 d371f4b..8db8c49 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -175,7 +175,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 982268f..310faf1 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -362,7 +362,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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 66ec3af..0dd506b 100644
--- a/team-list.html
+++ b/team-list.html
@@ -659,7 +659,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-10-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-10-15</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/index-all.html b/testdevapidocs/index-all.html
index b0081ba..6b2a371 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -51957,6 +51957,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html#testConcurrentUpdate--">testConcurrentUpdate()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableAggregate</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testConcurrentUpdateCachedLocationOnError--">testConcurrentUpdateCachedLocationOnError()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html" title="class in org.apache.hadoop.hbase.client">TestAsyncNonMetaRegionLocator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.html#testConcurrentWaitWake--">testConcurrentWaitWake()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureSchedulerConcurrency</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.html#testConcurrentWaitWake-boolean-">testConcurrentWaitWake(boolean)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureSchedulerConcurrency</a></dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 7e63870..b726ce9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -146,8 +146,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.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html
index 3d44231..00e8575 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":9,"i7":9,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":9,"i7":9,"i8":9,"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};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -241,42 +241,46 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testDisableTable--">testDisableTable</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testConcurrentUpdateCachedLocationOnError--">testConcurrentUpdateCachedLocationOnError</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateAfter--">testLocateAfter</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testDisableTable--">testDisableTable</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateBeforeInOnlyRegion--">testLocateBeforeInOnlyRegion</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateAfter--">testLocateAfter</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateBeforeLastRegion--">testLocateBeforeLastRegion</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateBeforeInOnlyRegion--">testLocateBeforeInOnlyRegion</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i15" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testMultiRegionTable--">testMultiRegionTable</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateBeforeLastRegion--">testLocateBeforeLastRegion</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i16" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testNoTable--">testNoTable</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testMultiRegionTable--">testMultiRegionTable</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i17" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testRegionMove--">testRegionMove</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testNoTable--">testNoTable</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i18" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testRegionReplicas--">testRegionReplicas</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testRegionMove--">testRegionMove</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testReload--">testReload</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testRegionReplicas--">testRegionReplicas</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testReload--">testReload</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testSingleRegionTable--">testSingleRegionTable</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -681,7 +685,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testLocateBeforeInOnlyRegion--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testLocateBeforeInOnlyRegion</h4>
 <pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#line.394">testLocateBeforeInOnlyRegion</a>()
@@ -694,6 +698,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testConcurrentUpdateCachedLocationOnError--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testConcurrentUpdateCachedLocationOnError</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#line.404">testConcurrentUpdateCachedLocationOnError</a>()
+                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>
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/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index cb24e47..4dedf4e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -591,15 +591,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
 </ul>
 </li>
 </ul>
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 a69cc84..64b73da 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/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/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 07411a2..fe42ac3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -716,11 +716,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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>
+<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/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>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index b22b911..ad8fb2d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index d4e1970..2ad43aa 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/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.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 </ul>
 </li>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html
index 38e6cca..dfebb21 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html
@@ -407,7 +407,17 @@
 <span class="sourceLineNo">399</span>    assertArrayEquals(loc.getRegion().getStartKey(), EMPTY_START_ROW);<a name="line.399"></a>
 <span class="sourceLineNo">400</span>    assertArrayEquals(loc.getRegion().getEndKey(), EMPTY_END_ROW);<a name="line.400"></a>
 <span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>}<a name="line.402"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  @Test<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  public void testConcurrentUpdateCachedLocationOnError() throws Exception {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    createSingleRegionTable();<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    HRegionLocation loc =<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        getDefaultRegionLocation(TABLE_NAME, EMPTY_START_ROW, RegionLocateType.CURRENT, false)<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            .get();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    IntStream.range(0, 100).parallel()<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        .forEach(i -&gt; LOCATOR.updateCachedLocationOnError(loc, new NotServingRegionException()));<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>