blob: 19419999f5162fc8af61a37ee52fee012319abe3 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>MetaRegionLocationCache (Apache HBase 4.0.0-alpha-1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.hadoop.hbase, class: MetaRegionLocationCache">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/MetaRegionLocationCache.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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<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="sub-nav-list">
<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>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.hadoop.hbase</a></div>
<h1 title="Class MetaRegionLocationCache" class="title">Class MetaRegionLocationCache</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper.ZKListener</a>
<div class="inheritance">org.apache.hadoop.hbase.MetaRegionLocationCache</div>
</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="annotations">@Private
</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-50">MetaRegionLocationCache</a></span>
<span class="extends-implements">extends <a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></span></div>
<div class="block">A cache of meta region location metadata. Registers a listener on ZK to track changes to the meta
table znodes. Clients are expected to retry if the meta information is stale. This class is
thread-safe (a single instance of this class can be shared by multiple threads without race
conditions).</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private static enum&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="MetaRegionLocationCache.ZNodeOpType.html" class="type-name-link" title="enum class in org.apache.hadoop.hbase">MetaRegionLocationCache.ZNodeOpType</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="types/CopyOnWriteArrayMap.html" title="class in org.apache.hadoop.hbase.types">CopyOnWriteArrayMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#cachedMetaLocations" class="member-name-link">cachedMetaLocations</a></code></div>
<div class="col-last even-row-color">
<div class="block">Cached meta region locations indexed by replica ID.</div>
</div>
<div class="col-first odd-row-color"><code>private static final org.slf4j.Logger</code></div>
<div class="col-second odd-row-color"><code><a href="#LOG" class="member-name-link">LOG</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private static final int</code></div>
<div class="col-second even-row-color"><code><a href="#MAX_ZK_META_FETCH_RETRIES" class="member-name-link">MAX_ZK_META_FETCH_RETRIES</a></code></div>
<div class="col-last even-row-color">
<div class="block">Maximum number of times we retry when ZK operation times out.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util">RetryCounterFactory</a></code></div>
<div class="col-second odd-row-color"><code><a href="#retryCounterFactory" class="member-name-link">retryCounterFactory</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private static final int</code></div>
<div class="col-second even-row-color"><code><a href="#SLEEP_INTERVAL_MS_BETWEEN_RETRIES" class="member-name-link">SLEEP_INTERVAL_MS_BETWEEN_RETRIES</a></code></div>
<div class="col-last even-row-color">
<div class="block">Sleep interval ms between ZK operation retries.</div>
</div>
<div class="col-first odd-row-color"><code>private static final int</code></div>
<div class="col-second odd-row-color"><code><a href="#SLEEP_INTERVAL_MS_MAX" class="member-name-link">SLEEP_INTERVAL_MS_MAX</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.hadoop.hbase.zookeeper.ZKListener">Fields inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
<code><a href="zookeeper/ZKListener.html#watcher">watcher</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.hadoop.hbase.zookeeper.ZKWatcher)" class="member-name-link">MetaRegionLocationCache</a><wbr>(<a href="zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkWatcher)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private <a href="HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMetaRegionLocation(int)" class="member-name-link">getMetaRegionLocation</a><wbr>(int&nbsp;replicaId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets the HRegionLocation for a given meta replica ID.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMetaRegionLocations()" class="member-name-link">getMetaRegionLocations</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns Optional list of HRegionLocations for meta replica(s), null if the cache is empty.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isValidMetaPath(java.lang.String)" class="member-name-link">isValidMetaPath</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Helper to check if the given 'path' corresponds to a meta znode.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadMetaLocationsFromZk(org.apache.hadoop.hbase.util.RetryCounter,org.apache.hadoop.hbase.MetaRegionLocationCache.ZNodeOpType)" class="member-name-link">loadMetaLocationsFromZk</a><wbr>(<a href="util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;retryCounter,
<a href="MetaRegionLocationCache.ZNodeOpType.html" title="enum class in org.apache.hadoop.hbase">MetaRegionLocationCache.ZNodeOpType</a>&nbsp;opType)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Populates the current snapshot of meta locations from ZK.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nodeChildrenChanged(java.lang.String)" class="member-name-link">nodeChildrenChanged</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called when an existing node has a child node added or removed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nodeCreated(java.lang.String)" class="member-name-link">nodeCreated</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called when a new node has been created.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nodeDataChanged(java.lang.String)" class="member-name-link">nodeDataChanged</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called when an existing node has changed data.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nodeDeleted(java.lang.String)" class="member-name-link">nodeDeleted</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called when a node has been deleted</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateMetaLocation(java.lang.String,org.apache.hadoop.hbase.MetaRegionLocationCache.ZNodeOpType)" class="member-name-link">updateMetaLocation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path,
<a href="MetaRegionLocationCache.ZNodeOpType.html" title="enum class in org.apache.hadoop.hbase">MetaRegionLocationCache.ZNodeOpType</a>&nbsp;opType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.hadoop.hbase.zookeeper.ZKListener">Methods inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
<code><a href="zookeeper/ZKListener.html#getWatcher()">getWatcher</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-53">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="MAX_ZK_META_FETCH_RETRIES">
<h3>MAX_ZK_META_FETCH_RETRIES</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-58">MAX_ZK_META_FETCH_RETRIES</a></span></div>
<div class="block">Maximum number of times we retry when ZK operation times out.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.hadoop.hbase.MetaRegionLocationCache.MAX_ZK_META_FETCH_RETRIES">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="SLEEP_INTERVAL_MS_BETWEEN_RETRIES">
<h3>SLEEP_INTERVAL_MS_BETWEEN_RETRIES</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-62">SLEEP_INTERVAL_MS_BETWEEN_RETRIES</a></span></div>
<div class="block">Sleep interval ms between ZK operation retries.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.hadoop.hbase.MetaRegionLocationCache.SLEEP_INTERVAL_MS_BETWEEN_RETRIES">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="SLEEP_INTERVAL_MS_MAX">
<h3>SLEEP_INTERVAL_MS_MAX</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-63">SLEEP_INTERVAL_MS_MAX</a></span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.hadoop.hbase.MetaRegionLocationCache.SLEEP_INTERVAL_MS_MAX">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="retryCounterFactory">
<h3>retryCounterFactory</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util">RetryCounterFactory</a></span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-64">retryCounterFactory</a></span></div>
</section>
</li>
<li>
<section class="detail" id="cachedMetaLocations">
<h3>cachedMetaLocations</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="types/CopyOnWriteArrayMap.html" title="class in org.apache.hadoop.hbase.types">CopyOnWriteArrayMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-74">cachedMetaLocations</a></span></div>
<div class="block">Cached meta region locations indexed by replica ID. CopyOnWriteArrayMap ensures synchronization
during updates and a consistent snapshot during client requests. Even though
CopyOnWriteArrayMap copies the data structure for every write, that should be OK since the size
of the list is often small and mutations are not too often and we do not need to block client
requests while mutations are in progress.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.hadoop.hbase.zookeeper.ZKWatcher)">
<h3>MetaRegionLocationCache</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-83">MetaRegionLocationCache</a></span><wbr><span class="parameters">(<a href="zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkWatcher)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="loadMetaLocationsFromZk(org.apache.hadoop.hbase.util.RetryCounter,org.apache.hadoop.hbase.MetaRegionLocationCache.ZNodeOpType)">
<h3>loadMetaLocationsFromZk</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-104">loadMetaLocationsFromZk</a></span><wbr><span class="parameters">(<a href="util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;retryCounter,
<a href="MetaRegionLocationCache.ZNodeOpType.html" title="enum class in org.apache.hadoop.hbase">MetaRegionLocationCache.ZNodeOpType</a>&nbsp;opType)</span></div>
<div class="block">Populates the current snapshot of meta locations from ZK. If no meta znodes exist, it registers
a watcher on base znode to check for any CREATE/DELETE events on the children.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>retryCounter</code> - controls the number of retries and sleep between retries.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMetaRegionLocation(int)">
<h3>getMetaRegionLocation</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a></span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-151">getMetaRegionLocation</a></span><wbr><span class="parameters">(int&nbsp;replicaId)</span>
throws <span class="exceptions">org.apache.zookeeper.KeeperException</span></div>
<div class="block">Gets the HRegionLocation for a given meta replica ID. Renews the watch on the znode for future
updates.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>replicaId</code> - ReplicaID of the region.</dd>
<dt>Returns:</dt>
<dd>HRegionLocation for the meta replica.</dd>
<dt>Throws:</dt>
<dd><code>org.apache.zookeeper.KeeperException</code> - if there is any issue fetching/parsing the serialized data.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="updateMetaLocation(java.lang.String,org.apache.hadoop.hbase.MetaRegionLocationCache.ZNodeOpType)">
<h3>updateMetaLocation</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-163">updateMetaLocation</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path,
<a href="MetaRegionLocationCache.ZNodeOpType.html" title="enum class in org.apache.hadoop.hbase">MetaRegionLocationCache.ZNodeOpType</a>&nbsp;opType)</span></div>
</section>
</li>
<li>
<section class="detail" id="getMetaRegionLocations()">
<h3>getMetaRegionLocations</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-205">getMetaRegionLocations</a></span>()</div>
<div class="block">Returns Optional list of HRegionLocations for meta replica(s), null if the cache is empty.</div>
</section>
</li>
<li>
<section class="detail" id="isValidMetaPath(java.lang.String)">
<h3>isValidMetaPath</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-224">isValidMetaPath</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</span></div>
<div class="block">Helper to check if the given 'path' corresponds to a meta znode. This listener is only
interested in changes to meta znodes.</div>
</section>
</li>
<li>
<section class="detail" id="nodeCreated(java.lang.String)">
<h3>nodeCreated</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-228">nodeCreated</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="zookeeper/ZKListener.html#nodeCreated(java.lang.String)">ZKListener</a></code></span></div>
<div class="block">Called when a new node has been created.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="zookeeper/ZKListener.html#nodeCreated(java.lang.String)">nodeCreated</a></code>&nbsp;in class&nbsp;<code><a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
<dt>Parameters:</dt>
<dd><code>path</code> - full path of the new node</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="nodeDeleted(java.lang.String)">
<h3>nodeDeleted</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-233">nodeDeleted</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="zookeeper/ZKListener.html#nodeDeleted(java.lang.String)">ZKListener</a></code></span></div>
<div class="block">Called when a node has been deleted</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="zookeeper/ZKListener.html#nodeDeleted(java.lang.String)">nodeDeleted</a></code>&nbsp;in class&nbsp;<code><a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
<dt>Parameters:</dt>
<dd><code>path</code> - full path of the deleted node</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="nodeDataChanged(java.lang.String)">
<h3>nodeDataChanged</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-238">nodeDataChanged</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="zookeeper/ZKListener.html#nodeDataChanged(java.lang.String)">ZKListener</a></code></span></div>
<div class="block">Called when an existing node has changed data.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="zookeeper/ZKListener.html#nodeDataChanged(java.lang.String)">nodeDataChanged</a></code>&nbsp;in class&nbsp;<code><a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
<dt>Parameters:</dt>
<dd><code>path</code> - full path of the updated node</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="nodeChildrenChanged(java.lang.String)">
<h3>nodeChildrenChanged</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../src-html/org/apache/hadoop/hbase/MetaRegionLocationCache.html#line-243">nodeChildrenChanged</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;path)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="zookeeper/ZKListener.html#nodeChildrenChanged(java.lang.String)">ZKListener</a></code></span></div>
<div class="block">Called when an existing node has a child node added or removed.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="zookeeper/ZKListener.html#nodeChildrenChanged(java.lang.String)">nodeChildrenChanged</a></code>&nbsp;in class&nbsp;<code><a href="zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
<dt>Parameters:</dt>
<dd><code>path</code> - full path of the node whose children have changed</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>