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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 static final <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 static final <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 void <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> loc)</pre>
+<pre>private void <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> 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 <a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a> <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> loc)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a> <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> 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 <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> loc,
+<pre>void <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> 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> 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 <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> tableName)</pre>
+<pre>void <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> 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.html#line.626">clearCache</a>()</pre>
+<pre>void <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 <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> serverName)</pre>
+<pre>void <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> 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> <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> tableName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a> <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> tableName,
byte[] 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 <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> tableName)</pre>
+<pre>int <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> 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<MetricsConnection> 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 -> 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 -> 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<byte[], RegionLocations> 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<MetricsConnection> 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 -> 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 -> 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<byte[], RegionLocations> 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<MetricsConnection> 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 -> 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 -> 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<byte[], RegionLocations> 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<MetricsConnection> 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 -> 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 -> 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<byte[], RegionLocations> 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<MetricsConnection> 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 -> 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 -> 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<byte[], RegionLocations> 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<MetricsConnection> 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 -> 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 -> 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<byte[], RegionLocations> 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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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="$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
<div class="row">
<p>Copyright ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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> </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> </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> </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> </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><E> (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><T>, 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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testConcurrentUpdateCachedLocationOnError--">testConcurrentUpdateCachedLocationOnError</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testDisableTable--">testDisableTable</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateAfter--">testLocateAfter</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateBeforeInOnlyRegion--">testLocateBeforeInOnlyRegion</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testLocateBeforeLastRegion--">testLocateBeforeLastRegion</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testMultiRegionTable--">testMultiRegionTable</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testNoTable--">testNoTable</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testRegionMove--">testRegionMove</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#testRegionReplicas--">testRegionReplicas</a></span>()</code> </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> </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> </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 void <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 void <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><E> (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><T>, 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><E> (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><T>, 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><V>, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure<TEnvironment> (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><T>)
<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<TEnvironment> (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><T>)
+<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><V>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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 -> 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>