blob: 79f553e2285bd52bffc1dfdc97bdf7ceea8d94b0 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CatalogReplicaLoadBalanceSimpleSelector (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="CatalogReplicaLoadBalanceSimpleSelector (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CatalogReplicaLoadBalanceSimpleSelector.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelectorFactory.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html" target="_top">Frames</a></li>
<li><a href="CatalogReplicaLoadBalanceSimpleSelector.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.hbase.client</div>
<h2 title="Class CatalogReplicaLoadBalanceSimpleSelector" class="title">Class CatalogReplicaLoadBalanceSimpleSelector</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html" title="interface in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSelector</a>, <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></dd>
</dl>
<hr>
<br>
<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.65">CatalogReplicaLoadBalanceSimpleSelector</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html" title="interface in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSelector</a>, <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></pre>
<div class="block"><p>CatalogReplicaLoadBalanceReplicaSimpleSelector implements a simple catalog replica load
balancing algorithm. It maintains a stale location cache for each table. Whenever client looks
up location, it first check if the row is the stale location cache. If yes, the location from
catalog replica is stale, it will go to the primary region to look up update-to-date location;
otherwise, it will randomly pick up a replica region for lookup. When clients receive
RegionNotServedException from region servers, it will add these region locations to the stale
location cache. The stale cache will be cleaned up periodically by a chore.</p>
It follows a simple algorithm to choose a replica to go:
<ol>
<li>If there is no stale location entry for rows it looks up, it will randomly
pick a replica region to do lookup. </li>
<li>If the location from the replica region is stale, client gets RegionNotServedException
from region server, in this case, it will create StaleLocationCacheEntry in
CatalogReplicaLoadBalanceReplicaSimpleSelector.</li>
<li>When client tries to do location lookup, it checks StaleLocationCache first for rows it
tries to lookup, if entry exists, it will go with primary meta region to do lookup;
otherwise, it will follow step 1.</li>
<li>A chore will periodically run to clean up cache entries in the StaleLocationCache.</li>
</ol></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry</a></span></code>
<div class="block">StaleLocationCacheEntry is the entry when a stale location is reported by an client.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/AsyncConnectionImpl.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionImpl</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#conn">conn</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/IntSupplier.html?is-external=true" title="class or interface in java.util.function">IntSupplier</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#getNumOfReplicas">getNumOfReplicas</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#isStopped">isStopped</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#numOfReplicas">numOfReplicas</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#REFRESH_REPLICA_COUNT_CHORE_INTERVAL_IN_MILLISECONDS">REFRESH_REPLICA_COUNT_CHORE_INTERVAL_IN_MILLISECONDS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#STALE_CACHE_CLEAN_CHORE_INTERVAL_IN_MILLISECONDS">STALE_CACHE_CLEAN_CHORE_INTERVAL_IN_MILLISECONDS</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#STALE_CACHE_TIMEOUT_IN_MILLISECONDS">STALE_CACHE_TIMEOUT_IN_MILLISECONDS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#staleCache">staleCache</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#tableName">tableName</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSelector">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html" title="interface in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSelector</a></h3>
<code><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html#UNINITIALIZED_NUM_OF_REPLICAS">UNINITIALIZED_NUM_OF_REPLICAS</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#CatalogReplicaLoadBalanceSimpleSelector-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.AsyncConnectionImpl-java.util.function.IntSupplier-">CatalogReplicaLoadBalanceSimpleSelector</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
<a href="../../../../../org/apache/hadoop/hbase/client/AsyncConnectionImpl.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionImpl</a>&nbsp;conn,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/IntSupplier.html?is-external=true" title="class or interface in java.util.function">IntSupplier</a>&nbsp;getNumOfReplicas)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#cleanupReplicaReplicaStaleCache--">cleanupReplicaReplicaStaleCache</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#getCacheCleanupChore-org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector-">getCacheCleanupChore</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector</a>&nbsp;selector)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#getRandomReplicaId--">getRandomReplicaId</a></span>()</code>
<div class="block">Select an random replica id.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#getRefreshReplicaCountChore-org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector-">getRefreshReplicaCountChore</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector</a>&nbsp;selector)</code>&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#isStopped--">isStopped</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#onError-org.apache.hadoop.hbase.HRegionLocation-">onError</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc)</code>
<div class="block">When a client runs into RegionNotServingException, it will call this method to
update Selector's internal state.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#refreshCatalogReplicaCount--">refreshCatalogReplicaCount</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#select-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.client.RegionLocateType-">select</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tablename,
byte[]&nbsp;row,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client">RegionLocateType</a>&nbsp;locateType)</code>
<div class="block">When it looks up a location, it will call this method to find a replica region to go.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#stop-java.lang.String-">stop</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</code>
<div class="block">Stop this service.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="LOG">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.67">LOG</a></pre>
</li>
</ul>
<a name="STALE_CACHE_TIMEOUT_IN_MILLISECONDS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STALE_CACHE_TIMEOUT_IN_MILLISECONDS</h4>
<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.69">STALE_CACHE_TIMEOUT_IN_MILLISECONDS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector.STALE_CACHE_TIMEOUT_IN_MILLISECONDS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="STALE_CACHE_CLEAN_CHORE_INTERVAL_IN_MILLISECONDS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STALE_CACHE_CLEAN_CHORE_INTERVAL_IN_MILLISECONDS</h4>
<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.70">STALE_CACHE_CLEAN_CHORE_INTERVAL_IN_MILLISECONDS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector.STALE_CACHE_CLEAN_CHORE_INTERVAL_IN_MILLISECONDS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="REFRESH_REPLICA_COUNT_CHORE_INTERVAL_IN_MILLISECONDS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>REFRESH_REPLICA_COUNT_CHORE_INTERVAL_IN_MILLISECONDS</h4>
<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.71">REFRESH_REPLICA_COUNT_CHORE_INTERVAL_IN_MILLISECONDS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector.REFRESH_REPLICA_COUNT_CHORE_INTERVAL_IN_MILLISECONDS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="staleCache">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>staleCache</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.105">staleCache</a></pre>
</li>
</ul>
<a name="numOfReplicas">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>numOfReplicas</h4>
<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.106">numOfReplicas</a></pre>
</li>
</ul>
<a name="conn">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>conn</h4>
<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncConnectionImpl.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionImpl</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.107">conn</a></pre>
</li>
</ul>
<a name="tableName">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tableName</h4>
<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.108">tableName</a></pre>
</li>
</ul>
<a name="getNumOfReplicas">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumOfReplicas</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/IntSupplier.html?is-external=true" title="class or interface in java.util.function">IntSupplier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.109">getNumOfReplicas</a></pre>
</li>
</ul>
<a name="isStopped">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isStopped</h4>
<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.110">isStopped</a></pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="CatalogReplicaLoadBalanceSimpleSelector-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.AsyncConnectionImpl-java.util.function.IntSupplier-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CatalogReplicaLoadBalanceSimpleSelector</h4>
<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.112">CatalogReplicaLoadBalanceSimpleSelector</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
<a href="../../../../../org/apache/hadoop/hbase/client/AsyncConnectionImpl.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionImpl</a>&nbsp;conn,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/IntSupplier.html?is-external=true" title="class or interface in java.util.function">IntSupplier</a>&nbsp;getNumOfReplicas)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="onError-org.apache.hadoop.hbase.HRegionLocation-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onError</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.130">onError</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;loc)</pre>
<div class="block">When a client runs into RegionNotServingException, it will call this method to
update Selector's internal state.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html#onError-org.apache.hadoop.hbase.HRegionLocation-">onError</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html" title="interface in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSelector</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loc</code> - the location which causes exception.</dd>
</dl>
</li>
</ul>
<a name="getRandomReplicaId--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRandomReplicaId</h4>
<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.146">getRandomReplicaId</a>()</pre>
<div class="block">Select an random replica id. In case there is no replica region configured, return
the primary replica id.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Replica id</dd>
</dl>
</li>
</ul>
<a name="select-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.client.RegionLocateType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>select</h4>
<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.170">select</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tablename,
byte[]&nbsp;row,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client">RegionLocateType</a>&nbsp;locateType)</pre>
<div class="block">When it looks up a location, it will call this method to find a replica region to go.
For a normal case, > 99% of region locations from catalog/meta replica will be up to date.
In extreme cases such as region server crashes, it will depends on how fast replication
catches up.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html#select-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.client.RegionLocateType-">select</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.html" title="interface in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSelector</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tablename</code> - table name it looks up</dd>
<dd><code>row</code> - key it looks up.</dd>
<dd><code>locateType</code> - locateType, Only BEFORE and CURRENT will be passed in.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>catalog replica id</dd>
</dl>
</li>
</ul>
<a name="stop-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.236">stop</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-">Stoppable</a></code></span></div>
<div class="block">Stop this service.
Implementers should favor logging errors over throwing RuntimeExceptions.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-">stop</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>why</code> - Why we're stopping.</dd>
</dl>
</li>
</ul>
<a name="isStopped--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStopped</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.241">isStopped</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#isStopped--">isStopped</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-"><code>Stoppable.stop(String)</code></a> has been closed.</dd>
</dl>
</li>
</ul>
<a name="cleanupReplicaReplicaStaleCache--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanupReplicaReplicaStaleCache</h4>
<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.245">cleanupReplicaReplicaStaleCache</a>()</pre>
</li>
</ul>
<a name="refreshCatalogReplicaCount--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>refreshCatalogReplicaCount</h4>
<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.261">refreshCatalogReplicaCount</a>()</pre>
</li>
</ul>
<a name="getCacheCleanupChore-org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCacheCleanupChore</h4>
<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.279">getCacheCleanupChore</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector</a>&nbsp;selector)</pre>
</li>
</ul>
<a name="getRefreshReplicaCountChore-org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceSimpleSelector-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getRefreshReplicaCountChore</h4>
<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html#line.290">getRefreshReplicaCountChore</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html" title="class in org.apache.hadoop.hbase.client">CatalogReplicaLoadBalanceSimpleSelector</a>&nbsp;selector)</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CatalogReplicaLoadBalanceSimpleSelector.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelectorFactory.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.StaleLocationCacheEntry.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.html" target="_top">Frames</a></li>
<li><a href="CatalogReplicaLoadBalanceSimpleSelector.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>